-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcompute-engine.html
81 lines (81 loc) · 46.6 KB
/
compute-engine.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-compute-engine/introduction" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.7.0">
<title data-rh="true">Introduction - Compute Engine · CortexJS</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://cortexjs.io/img/social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://cortexjs.io/img/social-card.jpg"><meta data-rh="true" property="og:url" content="https://cortexjs.io/compute-engine"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Introduction - Compute Engine · CortexJS"><meta data-rh="true" name="description" content="The Compute Engine is a JavaScript/TypeScript library for symbolic computing and numeric evaluation of mathematical expressions."><meta data-rh="true" property="og:description" content="The Compute Engine is a JavaScript/TypeScript library for symbolic computing and numeric evaluation of mathematical expressions."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://cortexjs.io/compute-engine"><link data-rh="true" rel="alternate" href="https://cortexjs.io/compute-engine" hreflang="en"><link data-rh="true" rel="alternate" href="https://cortexjs.io/compute-engine" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://Q23Y5RN3UQ-dsn.algolia.net" crossorigin="anonymous"><link rel="search" type="application/opensearchdescription+xml" title="CortexJS" href="/opensearch.xml">
<link rel="stylesheet" src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.11/codemirror.min.css">
<script>!function(){var e,o;window.moduleMap||(window.moduleMap={}),window.moduleMap={...window.moduleMap,mathlive:"//unpkg.com/mathlive?module","compute-engine":"//unpkg.com/@cortex-js/compute-engine?module"},(e=["https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/codemirror.min.js","https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/mode/javascript/javascript.min.js","https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/mode/xml/xml.min.js","https://unpkg.com/@cortex-js/compute-engine","https://unpkg.com/mathlive/dist/mathlive.min.js","https://unpkg.com/@ui-js/code-playground/dist/code-playground.js@module"]).forEach(((t,m)=>{const n=t.endsWith("@module"),c="script"+function(e,o=0){let t=3735928559^o,m=1103547991^o;for(let o=0;o<e.length;o++){const n=e.charCodeAt(o);t=Math.imul(t^n,2654435761),m=Math.imul(m^n,1597334677)}return t=Math.imul(t^t>>>16,2246822507),t^=Math.imul(m^m>>>13,3266489909),m=Math.imul(m^m>>>16,2246822507),m^=Math.imul(t^t>>>13,3266489909),4294967296*(2097151&m)+(t>>>0)}(t=t.replace("@module","")).toString(36);if(document.getElementById(c))return;const d=document.createElement("script");n&&(d.type="module"),d.id=c,d.src=t,d.async=!1,o&&m===e.length-1&&(d.onload=o),document.head.appendChild(d)}))}()</script>
<link rel="preconnect" href="https://rsms.me/">
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="/assets/css/styles.5e964885.css">
<script src="/assets/js/runtime~main.196a30fe.js" defer="defer"></script>
<script src="/assets/js/main.5ee1857f.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><b class="navbar__title text--truncate">CortexJS</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/mathfield">Mathfield</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/compute-engine">Compute Engine</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/cortex-js" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link" icon="github">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/mathfield">Mathfield</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/compute-engine">Compute Engine</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item compass-icon"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/compute-engine">Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item flask-icon"><a class="menu__link" tabindex="0" href="/compute-engine/demo">Demo</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2"><hr></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item changelog-icon"><a class="menu__link" tabindex="0" href="/compute-engine/changelog">Changelog</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2"><hr></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/expressions">Expressions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/evaluate">Evaluation of Expressions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/symbolic-computing">Symbolic Computing</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/numeric-evaluation">Numeric Evaluation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/canonical-form">Canonical Form</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/symbols">Symbols</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/augmenting">Custom Functions and Symbols</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/latex-syntax">LaTeX Syntax</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/types">Types</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/simplify">Simplify</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/compiling">Compiling Expressions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/assumptions">Assumptions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item guide-icon"><a class="menu__link" tabindex="0" href="/compute-engine/guides/patterns-and-rules">Patterns and Rules</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2"><hr></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item sdk-icon"><a class="menu__link" tabindex="0" href="/math-json">MathJSON Format</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item sdk-icon"><a class="menu__link" tabindex="0" href="/compute-engine/api">API Reference</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2"><hr></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item compass-icon"><a class="menu__link" tabindex="0" href="/compute-engine/standard-library">MathJSON Standard Library</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/arithmetic">Arithmetic</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/calculus">Calculus</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/collections">Collections</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/complex">Complex</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/control-structures">Control Structures</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/core">Core</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/functions">Functions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/linear-algebra">Linear Algebra</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/logic">Logic</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/sets">Sets</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/special-functions">Special Functions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/statistics">Statistics</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/styling">Styling</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item reference-icon"><a class="menu__link" tabindex="0" href="/compute-engine/reference/trigonometry">Trigonometry</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Tutorials</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item tutorial-icon"><a class="menu__link" tabindex="0" href="/tutorials/simple-quiz">Simple Quiz</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/about">Additional Resources</a></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Compute Engine</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Introduction</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><div class="heroContainer_TJ2O" style="--hero-image:url(/img/hero/compute-engine.jpg)"><div class="heroImage_PmN2"></div><div class="heroText_Kqfb"><header><h1>Compute Engine</h1></header></div></div>
<div class="intro_b9yo"><p>The <strong>Compute Engine</strong> is a JavaScript/TypeScript library for symbolic
computing and numeric evaluation of mathematical expressions.</p></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Note</div><div class="admonitionContent_BuS1"><p>To use the Compute Engine, you must write JavaScript or TypeScript code. This
guide assumes familiarity with one of these programming languages.</p></div></div>
<div style="height:1rem"></div>
<code-playground><div slot="javascript">console.log("exp(i*pi) =", ce.parse("e^{i\\pi}").evaluate());
</div></code-playground>
<code-playground><div slot="javascript">const expr = ce.parse("(a+b)^2");
<!-- -->ce.box(["Expand", expr]).evaluate().print();
</div></code-playground>
<code-playground><div slot="javascript">const lhs = ce.parse("1 + x(1 + 2x) + 2x");
<!-- -->const rhs = ce.parse("2x^2 + 3x + 1");
<!-- -->console.log(lhs, lhs.isEqual(rhs) ? "=" : "≠", rhs);
</div></code-playground>
<p>The <strong>Compute Engine</strong> is for educators, students, scientists and engineers
who need to make technical computing apps running in the browser or in
server-side JavaScript environments such as Node.</p>
<p>The Compute Engine manipulates math expressions represented with
the <a href="math-json/">MathJSON format</a>:</p>
<p>For example, the expression \(x^2 + 2x + 1\) is represented as:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:var(--console-color);--prism-background-color:var(--console-background)"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:var(--console-color);background-color:var(--console-background)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:var(--console-color)"><span class="token punctuation" style="color:var(--base-06)">[</span><span class="token string" style="color:var(--base-0b)">"Add"</span><span class="token punctuation" style="color:var(--base-06)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:var(--base-06)">[</span><span class="token string" style="color:var(--base-0b)">"Power"</span><span class="token punctuation" style="color:var(--base-06)">,</span><span class="token plain"> </span><span class="token string" style="color:var(--base-0b)">"x"</span><span class="token punctuation" style="color:var(--base-06)">,</span><span class="token plain"> </span><span class="token number" style="color:var(--base-09)">2</span><span class="token punctuation" style="color:var(--base-06)">]</span><span class="token punctuation" style="color:var(--base-06)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:var(--base-06)">[</span><span class="token string" style="color:var(--base-0b)">"Multiply"</span><span class="token punctuation" style="color:var(--base-06)">,</span><span class="token plain"> </span><span class="token number" style="color:var(--base-09)">2</span><span class="token punctuation" style="color:var(--base-06)">,</span><span class="token plain"> </span><span class="token string" style="color:var(--base-0b)">"x"</span><span class="token punctuation" style="color:var(--base-06)">]</span><span class="token punctuation" style="color:var(--base-06)">,</span><span class="token plain"> </span><span class="token number" style="color:var(--base-09)">1</span><span class="token punctuation" style="color:var(--base-06)">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The Compute Engine can:</p>
<ul>
<li><a href="/compute-engine/guides/latex-syntax/"><strong>parse</strong> and <strong>serialize</strong></a> expressions from and to LaTeX</li>
<li><a href="/compute-engine/guides/simplify/"><strong>simplify</strong></a> expressions</li>
<li>evaluate expression <a href="/compute-engine/guides/evaluate/"><strong>symbolically</strong></a></li>
<li>evaluate expressions <a href="/compute-engine/guides/numeric-evaluation/"><strong>numerically</strong></a></li>
<li><a href="/compute-engine/guides/compiling/"><strong>compile</strong></a> expressions to JavaScript functions</li>
</ul>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>Note</div><div class="admonitionContent_BuS1"><p>In this guide, functions such as <code>ce.box()</code> and <code>ce.parse()</code> require a
<code>ComputeEngine</code> instance which is denoted by the <code>ce.</code> prefix.</p><p><strong>To create a new <code>ComputeEngine</code> instance:</strong>, use <code>ce = new ComputeEngine()</code></p><p>Functions that apply to a boxed expression, such as <code>expr.simplify()</code> are denoted with the
<code>expr.</code> prefix.</p><p><strong>To create a new boxed expression:</strong>, use <code>expr = ce.parse()</code> or <code>expr = ce.box()</code></p></div></div>
<div class="readMore_KWn8"><a href="/compute-engine/demo/"><p>Try the <strong>interactive demo</strong> now<svg class="icon_qj0s chevronRightBold_bbMj"><use xlink:href="/icons.svg#chevron-right-bold"></use></svg></p></a></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="getting-started">Getting Started<a href="#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started"></a></h2>
<p>The easiest way to get started is to load the Compute Engine JavaScript module
from a CDN, then create a <code>ComputeEngine</code> instance.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="using-javascript-modules">Using JavaScript Modules<a href="#using-javascript-modules" class="hash-link" aria-label="Direct link to Using JavaScript Modules" title="Direct link to Using JavaScript Modules"></a></h3>
<p>JavaScript modules are the modern way to load JavaScript code. You can load the
Compute Engine module from a CDN using an <code>import</code> statement.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:var(--console-color);--prism-background-color:var(--console-background)"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:var(--console-color);background-color:var(--console-background)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:var(--console-color)"><span class="token tag punctuation" style="color:var(--base-06)"><</span><span class="token tag" style="color:var(--base-0e)">script</span><span class="token tag" style="color:var(--base-0e)"> </span><span class="token tag attr-name" style="color:var(--base-0c)">type</span><span class="token tag attr-value punctuation attr-equals" style="color:var(--base-06)">=</span><span class="token tag attr-value punctuation" style="color:var(--base-06)">"</span><span class="token tag attr-value" style="color:var(--base-0b)">module</span><span class="token tag attr-value punctuation" style="color:var(--base-06)">"</span><span class="token tag punctuation" style="color:var(--base-06)">></span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:var(--base-0e)">import</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:var(--base-06)">{</span><span class="token script language-javascript"> ComputeEngine </span><span class="token script language-javascript punctuation" style="color:var(--base-06)">}</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:var(--base-0e)">from</span><span class="token script language-javascript"> </span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:var(--base-0b)">"https://unpkg.com/@cortex-js/compute-engine?module"</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript" style="display:inline-block"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:var(--base-0e)">const</span><span class="token script language-javascript"> ce </span><span class="token script language-javascript operator" style="color:var(--base-06)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:var(--base-0e)">new</span><span class="token script language-javascript"> </span><span class="token script language-javascript class-name" style="color:var(--base-0a)">ComputeEngine</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">(</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">)</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> ce</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">.</span><span class="token script language-javascript function" style="color:var(--base-0a)">parse</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">(</span><span class="token script language-javascript string" style="color:var(--base-0b)">"e^{i\\pi}"</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">)</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">.</span><span class="token script language-javascript function" style="color:var(--base-0a)">evaluate</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">(</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">)</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">.</span><span class="token script language-javascript function" style="color:var(--base-0a)">print</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">(</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">)</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> </span><span class="token script language-javascript comment" style="color:var(--base-05)">// ➔ "-1"</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:var(--base-06)"></</span><span class="token tag" style="color:var(--base-0e)">script</span><span class="token tag punctuation" style="color:var(--base-06)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The ESM (module) version is also available in the npm package in <code>dist/compute-engine.min.esm.js</code></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="using-vintage-javascript">Using Vintage JavaScript<a href="#using-vintage-javascript" class="hash-link" aria-label="Direct link to Using Vintage JavaScript" title="Direct link to Using Vintage JavaScript"></a></h3>
<p>If you are using a vintage environment, or if your toolchain does not support
modern JavaScript features, use the UMD version. You can load the UMD
version by using a <code><script></code> tag.</p>
<p>For example, WebPack 4 does not support the optional chaining operator, using
the UMD version will make use of polyfills as necessary.</p>
<p>The UMD version is also available in the npm package in <code>dist/compute-engine.min.js</code></p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:var(--console-color);--prism-background-color:var(--console-background)"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:var(--console-color);background-color:var(--console-background)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:var(--console-color)"><span class="token tag punctuation" style="color:var(--base-06)"><</span><span class="token tag" style="color:var(--base-0e)">script</span><span class="token tag" style="color:var(--base-0e)"> </span><span class="token tag attr-name" style="color:var(--base-0c)">src</span><span class="token tag attr-value punctuation attr-equals" style="color:var(--base-06)">=</span><span class="token tag attr-value punctuation" style="color:var(--base-06)">"</span><span class="token tag attr-value" style="color:var(--base-0b)">//unpkg.com/@cortex-js/compute-engine</span><span class="token tag attr-value punctuation" style="color:var(--base-06)">"</span><span class="token tag punctuation" style="color:var(--base-06)">></span><span class="token script"></span><span class="token tag punctuation" style="color:var(--base-06)"></</span><span class="token tag" style="color:var(--base-0e)">script</span><span class="token tag punctuation" style="color:var(--base-06)">></span><span class="token plain"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token plain"></span><span class="token tag punctuation" style="color:var(--base-06)"><</span><span class="token tag" style="color:var(--base-0e)">script</span><span class="token tag punctuation" style="color:var(--base-06)">></span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> window</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">.</span><span class="token script language-javascript function-variable function" style="color:var(--base-0a)">onload</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:var(--base-06)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:var(--base-0e)">function</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">(</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:var(--base-06)">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:var(--base-0e)">const</span><span class="token script language-javascript"> ce </span><span class="token script language-javascript operator" style="color:var(--base-06)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:var(--base-0e)">new</span><span class="token script language-javascript"> </span><span class="token script language-javascript class-name" style="color:var(--base-0a)">ComputeEngine</span><span class="token script language-javascript class-name punctuation" style="color:var(--base-06)">.</span><span class="token script language-javascript class-name" style="color:var(--base-0a)">ComputeEngine</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">(</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">)</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> console</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">.</span><span class="token script language-javascript function" style="color:var(--base-0a)">log</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">(</span><span class="token script language-javascript">ce</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">.</span><span class="token script language-javascript function" style="color:var(--base-0a)">parse</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">(</span><span class="token script language-javascript string" style="color:var(--base-0b)">"e^{i\\pi}"</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">)</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">.</span><span class="token script language-javascript function" style="color:var(--base-0a)">evaluate</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">(</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">)</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">)</span><span class="token script language-javascript punctuation" style="color:var(--base-06)">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> </span><span class="token script language-javascript comment" style="color:var(--base-05)">// ➔ "-1"</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:var(--base-06)">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:var(--console-color)"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:var(--base-06)"></</span><span class="token tag" style="color:var(--base-0e)">script</span><span class="token tag punctuation" style="color:var(--base-06)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="other-versions">Other Versions<a href="#other-versions" class="hash-link" aria-label="Direct link to Other Versions" title="Direct link to Other Versions"></a></h3>
<p>A non-minified module which may be useful for debugging is available in
the npm package as <code>dist/compute-engine.esm.js</code>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="mathjson-standard-library">MathJSON Standard Library<a href="#mathjson-standard-library" class="hash-link" aria-label="Direct link to MathJSON Standard Library" title="Direct link to MathJSON Standard Library"></a></h2>
<p>The identifiers in a MathJSON expression are defined in libraries. The
<strong>MathJSON Standard Library</strong> is a collection of functions and symbols that are
available by default to a <code>ComputeEngine</code> instance.</p>
<div class="symbols-table" style="--first-col-width:21ch"><table><thead><tr><th style="text-align:left">Topic</th><th style="text-align:left"></th></tr></thead><tbody><tr><td style="text-align:left"><a href="/compute-engine/reference/arithmetic">Arithmetic</a></td><td style="text-align:left"><code>Add</code> <code>Multiply</code> <code>Power</code> <code>Exp</code> <code>Log</code> <code>ExponentialE</code> <code>ImaginaryUnit</code>...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/calculus">Calculus</a></td><td style="text-align:left"><code>D</code> <code>Derivative</code> <code>Integrate</code>...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/collections">Collections</a></td><td style="text-align:left"><code>List</code> <code>Reverse</code> <code>Filter</code>...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/complex">Complex</a></td><td style="text-align:left"><code>Real</code> <code>Conjugate</code>, <code>ComplexRoots</code>...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/control-structures">Control Structures</a></td><td style="text-align:left"><code>If</code> <code>Block</code> <code>Loop</code> ...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/core">Core</a></td><td style="text-align:left"><code>Declare</code> <code>Assign</code> <code>Error</code> <code>LatexString</code>...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/functions">Functions</a></td><td style="text-align:left"><code>Function</code> <code>Apply</code> <code>Return</code> ...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/logic">Logic</a></td><td style="text-align:left"><code>And</code> <code>Or</code> <code>Not</code> <code>True</code> <code>False</code> ...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/sets">Sets</a></td><td style="text-align:left"><code>Union</code> <code>Intersection</code> <code>EmptySet</code> <code>RealNumbers</code> <code>Integers</code> ...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/special-functions">Special Functions</a></td><td style="text-align:left"><code>Gamma</code> <code>Factorial</code>...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/statistics">Statistics</a></td><td style="text-align:left"><code>StandardDeviation</code> <code>Mean</code> <code>Erf</code>...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/styling">Styling</a></td><td style="text-align:left"><code>Delimiter</code> <code>Style</code>...</td></tr><tr><td style="text-align:left"><a href="/compute-engine/reference/trigonometry">Trigonometry</a></td><td style="text-align:left"><code>Pi</code> <code>Cos</code> <code>Sin</code> <code>Tan</code>...</td></tr></tbody></table></div>
<div class="readMore_KWn8"><a href="/compute-engine/guides/standard-library/"><p>Read more about the <strong>MathJSON Standard Library</strong><svg class="icon_qj0s chevronRightBold_bbMj"><use xlink:href="/icons.svg#chevron-right-bold"></use></svg></p></a></div>
<p>You can add your own definitions to the built-in definitions from the MathJSON Standard Library.</p>
<div class="readMore_KWn8"><a href="/compute-engine/guides/augmenting/"><p>Read more about <strong>Extending the MathJSON Standard Library</strong><svg class="icon_qj0s chevronRightBold_bbMj"><use xlink:href="/icons.svg#chevron-right-bold"></use></svg></p></a></div>
<p>If you use a custom LaTeX syntax, such as macros, you can add your own
definitions to the LaTeX dictionary, which defines how to parse and serialize
LaTeX to MathJSON.</p>
<div class="readMore_KWn8"><a href="/compute-engine/guides/latex-syntax/"><p>Read more about <strong>Parsing and Serializing LaTeX</strong><svg class="icon_qj0s chevronRightBold_bbMj"><use xlink:href="/icons.svg#chevron-right-bold"></use></svg></p></a></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"></div><div class="col lastUpdated_VsjB"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/mathfield/api"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">API Reference</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/compute-engine/demo"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Demo</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#getting-started" class="table-of-contents__link toc-highlight">Getting Started</a><ul><li><a href="#using-javascript-modules" class="table-of-contents__link toc-highlight">Using JavaScript Modules</a></li><li><a href="#using-vintage-javascript" class="table-of-contents__link toc-highlight">Using Vintage JavaScript</a></li><li><a href="#other-versions" class="table-of-contents__link toc-highlight">Other Versions</a></li></ul></li><li><a href="#mathjson-standard-library" class="table-of-contents__link toc-highlight">MathJSON Standard Library</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/mathfield">Mathfield</a></li><li class="footer__item"><a class="footer__link-item" href="/compute-engine">Compute Engine</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/cortex-js" target="_blank" rel="noopener noreferrer" class="footer__link-item"><svg class="icon-one-rem"><use role="none" xlink:href="/icons.svg#github"></use></svg>GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://discord.gg/yhmvVeJ4Hd" target="_blank" rel="noopener noreferrer" class="footer__link-item"><svg class="icon-one-rem"><use role="none" xlink:href="/icons.svg#discord"></use></svg>Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://chat.openai.com/g/g-8YgEfR7ig-cortexjs-assistant" target="_blank" rel="noopener noreferrer" class="footer__link-item"><svg class="icon-one-rem"><use role="none" xlink:href="/icons.svg#openai"></use></svg>CortexJS Chatbot<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about">About Us</a></li></ul></div></div></div></footer></div>
</body>
</html>