Add three new example scripts demonstrating the fswatch, sysinfo, and udp modules with file watching, system metrics, and UDP echo server/client patterns. Reorder the manual API sidebar navigation to list modules alphabetically, removing deprecated entries like websocket, tls, net, json, regex, jinja, os, signal, subprocess, sqlite, and timer while adding argparse, dataset, fswatch, and html.
315 lines
14 KiB
HTML
315 lines
14 KiB
HTML
<!DOCTYPE html>
|
|
<!-- retoor <retoor@molodetz.nl> -->
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>math - Wren-CLI Manual</title>
|
|
<link rel="stylesheet" href="../css/style.css">
|
|
</head>
|
|
<body>
|
|
<button class="mobile-menu-toggle">Menu</button>
|
|
<div class="container">
|
|
<aside class="sidebar">
|
|
<div class="sidebar-header">
|
|
<h1><a href="../index.html">Wren-CLI</a></h1>
|
|
<div class="version">v0.4.0</div>
|
|
</div>
|
|
<nav class="sidebar-nav">
|
|
<div class="section">
|
|
<span class="section-title">Getting Started</span>
|
|
<ul>
|
|
<li><a href="../getting-started/index.html">Overview</a></li>
|
|
<li><a href="../getting-started/installation.html">Installation</a></li>
|
|
<li><a href="../getting-started/first-script.html">First Script</a></li>
|
|
<li><a href="../getting-started/repl.html">Using the REPL</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="section">
|
|
<span class="section-title">Language</span>
|
|
<ul>
|
|
<li><a href="../language/index.html">Syntax Overview</a></li>
|
|
<li><a href="../language/classes.html">Classes</a></li>
|
|
<li><a href="../language/methods.html">Methods</a></li>
|
|
<li><a href="../language/control-flow.html">Control Flow</a></li>
|
|
<li><a href="../language/fibers.html">Fibers</a></li>
|
|
<li><a href="../language/modules.html">Modules</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="section">
|
|
<span class="section-title">API Reference</span>
|
|
<ul>
|
|
<li><a href="index.html">Overview</a></li>
|
|
<li><a href="string.html">String</a></li>
|
|
<li><a href="number.html">Num</a></li>
|
|
<li><a href="argparse.html">argparse</a></li>
|
|
<li><a href="base64.html">base64</a></li>
|
|
<li><a href="crypto.html">crypto</a></li>
|
|
<li><a href="dataset.html">dataset</a></li>
|
|
<li><a href="datetime.html">datetime</a></li>
|
|
<li><a href="dns.html">dns</a></li>
|
|
<li><a href="env.html">env</a></li>
|
|
<li><a href="fswatch.html">fswatch</a></li>
|
|
<li><a href="html.html">html</a></li>
|
|
<li><a href="http.html">http</a></li>
|
|
<li><a href="io.html">io</a></li>
|
|
<li><a href="jinja.html">jinja</a></li>
|
|
<li><a href="json.html">json</a></li>
|
|
<li><a href="markdown.html">markdown</a></li>
|
|
<li><a href="math.html" class="active">math</a></li>
|
|
<li><a href="net.html">net</a></li>
|
|
<li><a href="os.html">os</a></li>
|
|
<li><a href="pathlib.html">pathlib</a></li>
|
|
<li><a href="regex.html">regex</a></li>
|
|
<li><a href="scheduler.html">scheduler</a></li>
|
|
<li><a href="signal.html">signal</a></li>
|
|
<li><a href="sqlite.html">sqlite</a></li>
|
|
<li><a href="subprocess.html">subprocess</a></li>
|
|
<li><a href="sysinfo.html">sysinfo</a></li>
|
|
<li><a href="tempfile.html">tempfile</a></li>
|
|
<li><a href="timer.html">timer</a></li>
|
|
<li><a href="tls.html">tls</a></li>
|
|
<li><a href="udp.html">udp</a></li>
|
|
<li><a href="uuid.html">uuid</a></li>
|
|
<li><a href="wdantic.html">wdantic</a></li>
|
|
<li><a href="web.html">web</a></li>
|
|
<li><a href="websocket.html">websocket</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="section">
|
|
<span class="section-title">Tutorials</span>
|
|
<ul>
|
|
<li><a href="../tutorials/index.html">Tutorial List</a></li>
|
|
<li><a href="../tutorials/http-client.html">HTTP Client</a></li>
|
|
<li><a href="../tutorials/websocket-chat.html">WebSocket Chat</a></li>
|
|
<li><a href="../tutorials/database-app.html">Database App</a></li>
|
|
<li><a href="../tutorials/template-rendering.html">Templates</a></li>
|
|
<li><a href="../tutorials/cli-tool.html">CLI Tool</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="section">
|
|
<span class="section-title">How-To Guides</span>
|
|
<ul>
|
|
<li><a href="../howto/index.html">How-To List</a></li>
|
|
<li><a href="../howto/http-requests.html">HTTP Requests</a></li>
|
|
<li><a href="../howto/json-parsing.html">JSON Parsing</a></li>
|
|
<li><a href="../howto/regex-patterns.html">Regex Patterns</a></li>
|
|
<li><a href="../howto/file-operations.html">File Operations</a></li>
|
|
<li><a href="../howto/async-operations.html">Async Operations</a></li>
|
|
<li><a href="../howto/error-handling.html">Error Handling</a></li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
</aside>
|
|
<main class="content">
|
|
<nav class="breadcrumb">
|
|
<a href="../index.html">Home</a>
|
|
<span class="separator">/</span>
|
|
<a href="index.html">API Reference</a>
|
|
<span class="separator">/</span>
|
|
<span>math</span>
|
|
</nav>
|
|
|
|
<article>
|
|
<h1>math</h1>
|
|
|
|
<p>The <code>math</code> module provides mathematical functions and constants.</p>
|
|
|
|
<pre><code>import "math" for Math</code></pre>
|
|
|
|
<h2>Math Class</h2>
|
|
|
|
<div class="class-header">
|
|
<h3>Math</h3>
|
|
<p>Mathematical functions and constants</p>
|
|
</div>
|
|
|
|
<h3>Constants</h3>
|
|
|
|
<table>
|
|
<tr>
|
|
<th>Constant</th>
|
|
<th>Value</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
<tr>
|
|
<td><code>Math.pi</code></td>
|
|
<td>3.14159...</td>
|
|
<td>Pi</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>Math.e</code></td>
|
|
<td>2.71828...</td>
|
|
<td>Euler's number</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>Math.tau</code></td>
|
|
<td>6.28318...</td>
|
|
<td>Tau (2 * Pi)</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<h3>Basic Functions</h3>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.abs</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the absolute value.</p>
|
|
<pre><code>Math.abs(-5) // 5
|
|
Math.abs(3.14) // 3.14</code></pre>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.min</span>(<span class="param">a</span>, <span class="param">b</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the smaller of two values.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.max</span>(<span class="param">a</span>, <span class="param">b</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the larger of two values.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.clamp</span>(<span class="param">value</span>, <span class="param">min</span>, <span class="param">max</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Clamps a value to a range.</p>
|
|
<pre><code>Math.clamp(15, 0, 10) // 10
|
|
Math.clamp(5, 0, 10) // 5
|
|
Math.clamp(-5, 0, 10) // 0</code></pre>
|
|
|
|
<h3>Rounding</h3>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.floor</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Rounds down to the nearest integer.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.ceil</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Rounds up to the nearest integer.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.round</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Rounds to the nearest integer.</p>
|
|
|
|
<pre><code>Math.floor(3.7) // 3
|
|
Math.ceil(3.2) // 4
|
|
Math.round(3.5) // 4</code></pre>
|
|
|
|
<h3>Powers and Roots</h3>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.sqrt</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the square root.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.pow</span>(<span class="param">base</span>, <span class="param">exp</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns base raised to the power of exp.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.exp</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns e raised to the power of x.</p>
|
|
|
|
<pre><code>Math.sqrt(16) // 4
|
|
Math.pow(2, 10) // 1024
|
|
Math.exp(1) // 2.71828...</code></pre>
|
|
|
|
<h3>Logarithms</h3>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.log</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the natural logarithm (base e).</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.log10</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the base-10 logarithm.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.log2</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the base-2 logarithm.</p>
|
|
|
|
<h3>Trigonometry</h3>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.sin</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the sine (x in radians).</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.cos</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the cosine (x in radians).</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.tan</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the tangent (x in radians).</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.asin</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the arcsine in radians.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.acos</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the arccosine in radians.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.atan</span>(<span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the arctangent in radians.</p>
|
|
|
|
<div class="method-signature">
|
|
<span class="method-name">Math.atan2</span>(<span class="param">y</span>, <span class="param">x</span>) → <span class="type">Num</span>
|
|
</div>
|
|
<p>Returns the angle in radians between the positive x-axis and the point (x, y).</p>
|
|
|
|
<h2>Examples</h2>
|
|
|
|
<h3>Distance Calculation</h3>
|
|
<pre><code>import "math" for Math
|
|
|
|
var distance = Fn.new { |x1, y1, x2, y2|
|
|
var dx = x2 - x1
|
|
var dy = y2 - y1
|
|
return Math.sqrt(dx * dx + dy * dy)
|
|
}
|
|
|
|
System.print(distance.call(0, 0, 3, 4)) // 5</code></pre>
|
|
|
|
<h3>Degrees to Radians</h3>
|
|
<pre><code>import "math" for Math
|
|
|
|
var toRadians = Fn.new { |degrees| degrees * Math.pi / 180 }
|
|
var toDegrees = Fn.new { |radians| radians * 180 / Math.pi }
|
|
|
|
System.print(Math.sin(toRadians.call(90))) // 1</code></pre>
|
|
|
|
<h3>Circle Area</h3>
|
|
<pre><code>import "math" for Math
|
|
|
|
var circleArea = Fn.new { |radius|
|
|
return Math.pi * radius * radius
|
|
}
|
|
|
|
System.print(circleArea.call(5)) // 78.539...</code></pre>
|
|
</article>
|
|
|
|
<footer class="page-footer">
|
|
<a href="scheduler.html" class="prev">scheduler</a>
|
|
<a href="../tutorials/index.html" class="next">Tutorials</a>
|
|
</footer>
|
|
</main>
|
|
</div>
|
|
<script src="../js/main.js"></script>
|
|
</body>
|
|
</html>
|