diff --git a/exercise4/uiua-modules/Omnikar/uiua-math/.github/workflows/deploy-docs.yml b/exercise4/uiua-modules/Omnikar/uiua-math/.github/workflows/deploy-docs.yml deleted file mode 100644 index 107539c..0000000 --- a/exercise4/uiua-modules/Omnikar/uiua-math/.github/workflows/deploy-docs.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: Deploy to GitHub Pages - -on: - # Trigger the workflow every time you push to the `main` branch - # Using a different branch name? Replace `main` with your branch's name - push: - branches: [ main ] - # Allows you to run this workflow manually from the Actions tab on GitHub. - workflow_dispatch: - -# Allow this job to clone the repo and create a page deployment -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment -concurrency: - group: "pages" - cancel-in-progress: true - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout your repository using git - uses: actions/checkout@v4 - - - name: Setup Pages - uses: actions/configure-pages@v4 - - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - - - name: Clone and build uiua-doc-gen - run: | - git clone -b dev https://github.com/Marcos-cat/uiua-doc-gen.git - cd uiua-doc-gen - cargo build - echo "$(pwd)/target/debug" >> $GITHUB_PATH - - - name: Generate Documentation - run: uiua-doc-gen --name ${{ github.event.repository.name }} - - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ./doc-site - - deploy: - needs: build - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/exercise4/uiua-modules/Omnikar/uiua-math/LICENSE b/exercise4/uiua-modules/Omnikar/uiua-math/LICENSE deleted file mode 100644 index 669eccb..0000000 --- a/exercise4/uiua-modules/Omnikar/uiua-math/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Omnikar - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/exercise4/uiua-modules/Omnikar/uiua-math/README.md b/exercise4/uiua-modules/Omnikar/uiua-math/README.md deleted file mode 100644 index 8a0c811..0000000 --- a/exercise4/uiua-modules/Omnikar/uiua-math/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# uiua-math -`uiua-math` is a library of mathematical functions for the [Uiua](https://uiua.org) programming language. - -The library requires `# Experimental!` due to internal usage of experimental stack manipulation modifiers. - -Import the whole lib -```uiua -Math ~ "git: github.com/Omnikar/uiua-math" -``` -or import select functions -```uiua -~ "git: github.com/Omnikar/uiua-math" ~ QRot Qqp RQuat -``` - -Feel free to PR - -Functions list (see in-code documentation for more detail) -| Function | Description | -|----------|-----------------| -| `Mean` | Arithmetic mean | -| `GMean` | Geometric mean | -| `HMean` | Harmonic mean | -| `QMean` | Quadratic mean | -| `Median` | Median | -| `Var` | Variance | -| `Stdev` | Standard deviation | -| `MDet` | Matrix determinant | -| `Mgje` | Matrix Gauss-Jordan Elimination | -| `MCof` | Matrix cofactors | -| `MInv` | Matrix inverse | -| `Dot` | Dot product | -| `Cross` | Cross product | -| `Mmp` | Matrix product | -| `Mvp` | Matrix-vector product | -| `Mpow` | Matrix power | -| `Qqp` | Quaternion product | -| `RQuat` | Create 3D rotation quaternions | -| `QRot` | Rotate a 3D vector array using a quaternion array | -| `Fact` | Pervasive factorial | -| `Gamma` | Gamma function | -| `GCD` | Greatest common divisor | -| `LCM` | Least common multiple | -| `Base` | Encode an array of numbers into digits of a given base | -| `ModInv` | Inverse of N modulo M | -| `ModOrd` | Multiplicative order of N modulo M | -| `CFrac` | Convert a number X to a continued fraction to N terms | -| `Divisors` | Divisors of N (including 1 and N) | -| `Erf` | Error function | -| `DistRand` | Seeded random indices from a distribution array | -| `BoxMuller` | Box-muller transform: generate pairs of normally distributed values given pairs of uniformly distributed values | -| `Gaussian` | Generate a 2 dimensional square Gaussian kernel | -| `BinomPmf` | Binomial distribution | -| `BinomCmf` | Cumulative binomial distribution | -| `GeomPmf` | Geometric distribution (0-indexed) | -| `GeomCmf` | Cumulative geometric distribution (0-indexed) | -| `PoissonPmf` | Poisson distribution | -| `PoissonCmf` | Cumulative Poisson distribution | -| `NormalPdf` | Normal distribution | -| `NormalCdf` | Cumulative normal distribution | -| `Quad` | Po-Shen quadratic solver | -| `PSet` | Powerset of a list | -| `FFTConvolve` | Rank-polymorphic convolution using fast fourier transform | diff --git a/exercise4/uiua-modules/Omnikar/uiua-math/lib.ua b/exercise4/uiua-modules/Omnikar/uiua-math/lib.ua deleted file mode 100644 index 549d055..0000000 --- a/exercise4/uiua-modules/Omnikar/uiua-math/lib.ua +++ /dev/null @@ -1,428 +0,0 @@ -# Experimental! -# Various math functions - -# Extract real -R ↚ ◌°ℂ - -# -- Averages -- - -# Arithmetic mean -Mean ← ÷⧻⟜/+ -# Geometric mean -GMean ← ⁿ˜÷1⧻⟜/× -# Harmonic mean -HMean ← ÷/+⟜⧻˜÷1 -# Quadratic mean -QMean ← √÷⧻⟜/+˙× -# Median -# TODO: O(n) median algorithm? -Median ← ÷2/+⊏⊟⊃⌊⌈÷2-1⊸⧻⍆ - -# Variance -Var ← -˙×∩÷∩⊃⧻/+⟜˙× -# Standard deviation -Stdev ← √Var - -# -- Matrices/Vectors -- - -# ? SwappedRows Pivot -GaussEliminate‼ ↚ ∧( - ⊢⍖⊸⌵⍜⊙↙×0⟜⊡⤚⊸⊙⍉ - ⍜⊏⇌ ⊃⊙⊙∘^0 ⊟⤙⊙⊙∘ ⊙(⊃⋅⊙∘^1 ⍤.≥ε⊸⌵) ⟜⊡ - ⊸⍜⊡(÷⊸⊡:)⊸: - ⍜(°⊂↻|𝄐⌞-˜⊸⊞×⊙(⊡⤚˜⊙⍉))⊸: -)°⊏ - -# Matrix Determinant -MDet ← ◌⍣GaussEliminate‼(⍥¯𝄐𝄐/≠)𝄐𝄐× ⊙0⊙1 - -# Perform Gauss-Jordan elimination -Mgje ← ⊏⍏˜⨂1>1e-13⊸⌵ ⍥( - ↻₁⍣(⍜⊙⊢÷⟜(-⊞×⊙⊸⊢⊂0÷)°⊂⊸≡⊏⊢)◌⊚>1e-13⌵⊸⊢ -)⊸⧻ -# Mgje ← ⍣GaussEliminate‼(|)(⍤"Elimination cannot be completed"0) - -# Matrix Inverse -MInv ← |1 ⌅(⍜⍉(↘÷2⊸⧻) ⍣Mgje(⍤"Matrix has no inverse"0) ˜≡⊂˙⊞=°⊏|MInv) - -┌─╴test - ⍤⤙≍ 5 ⁅₃ MDet [1_¯3_¯1 1_¯1_¯2 1_0_0] - ⍤⤙≍ [0_0_1 ¯0.4_0.2_0.2 0.2_¯0.6_0.4] ⁅₃ MInv [1_¯3_¯1 1_¯1_¯2 1_0_0] - ⍤⤙≍ ˙⊞=⇡3 ⁅₃ Mgje [1_¯3_¯1 1_¯1_¯2 1_0_0] - - Mgje [1_5_5 - 4_5_¯10] - ⍤⤙≍ [1_0_¯5 - 0_1_2] - - ⁅₉ Mgje [3_¯1_10 - ¯2_4_5 - 1_1_8] - ⍤⤙≍ [1_0_4.5 - 0_1_3.5 - 0_0_0] - - ⁅₉ Mgje [0_0_2_¯4_¯5 - 0_1_¯1_1_3 - 0_6_0_¯6_5] - ⍤⤙≍ [0_1_0_¯1_0 - 0_0_1_¯2_0 - 0_0_0_0_1] -└─╴ - -MSquarify ↚ ⍜△[.√⊢] -# Matrix Cofactors -MCof ← ⍥¯⊞≠.◿2°⊏MSquarify≡(MDet MSquarify≡⊡⊙¤⊚¬⊞↥°⊟)⊙¤⬚0≡₀°⊚⊚⊸=. - -# Dot product -Dot ← /+× -# Cross product -Cross ← ↻2-∩(×↻2)◡: -# Matrix product -# -# Computes AB -# ? A B -Mmp ← |2 ⌅(˜⍜⍉⊞Dot|Mmp MInv) -# Matrix-vector product -# -# Computes MV where V is represented as a 1D list of numbers -# ? M V -Mvp ← |2 ⌅(Dot⍉|Mvp MInv) -# Matrix power -# ? P M -Mpow ← ◌⍥⟜Mmp⊙(:˙⊞=°⊏) -# TODO: Change to this if it comes to work with negative powers -# Mpow ← ⍥⟜Mmp⊙(˙⊞=°⊏) - -┌─╴test - ⍤⤙≍ [3_7 ¯6_2] ⌝Mmp [1_0 0_1] [3_7 ¯6_2] - ⍤⤙≍ [1_0 0_1] ⁅ ⌝Mmp . [1_2 3_4] - ⍤⤙≍ 3 ⁅ MDet [5_6 2_3] - - ⍤⤙≍ [¯8 5 ¯3 2 ¯1 1 0 1 1 2 3 5 8] ≡(⊢♭Mpow) ⍜-⇡¯7 6 ¤ [1_1 1_0] -└─╴ - -QqpMask ↚ [1_2_3_4 - 2_¯1_4_¯3 - 3_¯4_¯1_2 - 4_3_¯2_¯1] -# Quaternion product -# -# Computes PQ for quaternion arrays P and Q. -# -# Semi-pervasive; the last axis of the inputs must be of length 4, -# and will be interpreted as the input quaternions' real, i, j, and k. -# ```uiua -# # Computes (1+2i+3j+4k)(1+3i+5j+7k) and (2+4i+6j+8k)(5+6i+7j+8k) -# Qqp [1_2_3_4 2_4_6_8] [1_3_5_7 5_6_7_8] -# ## ╭─ -# ## ╷ ¯48 6 6 12 -# ## ¯120 24 60 48 -# ## ╯ -# ``` -# ? P Q -Qqp ← ⍉⊕/+-1⌵⊙×⟜±QqpMask⊞×∩°⍉ -# Create 3D rotation quaternions. -# -# Expects an angle array θ and a unit vector axis array U. -# -# Semi-pervasive; the unit vector array must have one extra trailing -# axis compared to the angle array, and that axis must be length 3. -# -# For each angle-vector pair, computes cos(θ/2) + Usin(θ/2). -# ```uiua -# # Creates two rotation quaternions: -# # - η radians about 0_0_1 -# # - π radians about 3/5_4/5_0 -# RQuat η_π [0_0_1 3/5_4/5_0] -# ``` -# To use rotation quaternions created by `RQuat` to rotate 3D -# vectors, see `QRot`. -# ? θ U -RQuat ← ⍜⊙°⍉⊂𝄐⌞×°∠÷2 -# Quaternion rotation implementation -QRotImpl ↚ ⍜⊙°⍉↘1 Qqp Qqp ⟜⍜∩°⍉(⬚0↙¯4:⍜↘¯ 1) -# Rotate a 3D vector array using a quaternion array. -# -# To create rotation quaternions to use with `QRot`, see `RQuat`. -# -# Expects a quaternion array Q and a 3D vector array V. -# -# Semi-pervasive; the input arrays should have matching shapes aside -# from the final axis, which should be of lengths 4 and 3 respectively. -# -# For each quaternion-vector pair, computes Q * V * Q'. -# ```uiua -# RQuat η 0_0_1 # Create a rotation by η radians about 0_0_1 -# QRot ¤:[3_2_0 1_3_2] # Use the quaternion to rotate 3_2_0 and 1_3_2 -# ``` -# `QRot` can be used with ⍜ to undo the rotations afterward. -# ? Q V -QRot ← ⌅(QRotImpl|QRotImpl⍜(↘1°⍉)¯) - -┌─╴test - ⍤⤙≍ [¯48_6_6_12 ¯120_24_60_48] Qqp [1_2_3_4 2_4_6_8] [1_3_5_7 5_6_7_8] - ⍤⤙≍ [¯2_3_0 ¯3_1_2] ⁅ QRot ¤:[3_2_0 1_3_2] RQuat η 0_0_1 -└─╴ - -# -- Number theory -- - -# Pervasive factorial -Fact ← /×°⍉+1⬚0≡₀⇡ - -┌─╴test - ⍤⤙≍ [1 1 2 6 24 120 720 5040] Fact [0 1 2 3 4 5 6 7] -└─╴ - -# Gamma function -# Γ(z) -Gamma ← ( - -1/2 ⟜( - -1 - # From https://en.wikipedia.org/wiki/Lanczos_approximation - °⊏[ - 0.9999999999999999 - 1975.3739023578853 - ¯4397.382392792243 - 3462.6328459862716 - ¯1156.9851431631168 - 154.53815050252774 - ¯6.253671612368916 - 0.034642762454736804 - ¯7.477617197444297e-7 - 6.304125382185226e-8 - ¯2.7405717035683877e-8 - 4.048694881756761e-9 - ] - /+÷⍜⊢⋅1≡+⊙¤⊙: - ) - ××× √τ ₑ¯ ⤙ⁿ ⤙+ 8 # g -) - -┌─╴test - ⍤⤙(<1e¯10 ⌵-) √π Gamma 1/2 - ⍤⤙(<1e¯10 ⌵-) 24 Gamma 5 - ⍤⤙(<1e¯10 ⌵-) ℂ¯0.09161772311294437 0.024480267015440246 Gamma ℂ.¯√2 -└─╴ - -# Greatest common divisor -# -# Ignores sign -GCD ← ◌⍢⤚◿±⌵ -# Least common multiple -# -# Ignores sign -LCM ← ⌵÷⊃GCD× - -┌─╴test - ⍤⤙≍ 6 GCD 18 24 - ⍤⤙≍ 24 LCM 8 12 -└─╴ - -# Encode an array of numbers into digits of a given base -# -# Analogous to `⋯` for base 2; the least significant digit is first. -# -# `Base` allows multiple bases as input. -# ```uiua -# # Encodes 6 in base 2, 7 in base 3, 8 in base 4, and 9 in base 5. -# Base [2_3 4_5] [6_7 8_9] -# ## ╭─ -# ## ╷ 0 1 1 -# ## ╷ 1 2 0 -# ## -# ## 0 2 0 -# ## 4 1 0 -# ## ╯ -# ``` -# -# You can use `⌝Base` to decode from a base/bases. -# ```uiua -# # Decodes 6 in base 2, 7 in base 3, 8 in base 4, and 9 in base 5. -# ⌝Base [2_3 4_5] [[0_1_1 1_2_0] [0_2_0 4_1_0]] -# ## ╭─ -# ## ╷ 6 7 -# ## 8 9 -# ## ╯ -# ``` -Base ← ⌅( - ⍉◌∧⊃◿(⊂¤⌊÷)ⁿ⊙¤⇌⇡/↥♭+1⌊⊃⌝˜ⁿ⊙⊙[] -| /+×ⁿ⊙¤⇡◡⋅⧻⊙°⍉) - -┌─╴test - ⍤⤙≍ [[2_2 1_0][3_1 1_1]] Base 5 [12_1 8_6] - ⍤⤙≍ [[0_1_1 1_2_0][0_2_0 4_1_0]] Base [2_3 4_5] [6_7 8_9] - ⍤⤙≍ [12_1 8_6] ⌝Base 5 [[2_2 1_0][3_1 1_1]] - ⍤⤙≍ [6_7 8_9] ⌝Base [2_3 4_5] [[0_1_1 1_2_0][0_2_0 4_1_0]] -└─╴ - -# Inverse of N modulo M (M if nonexistent) -# ? N M -ModInv ← ˜⨂1˜◿×◡⋅⇡ -# Multiplicative order of N modulo M -# ? N M -ModOrd ← ⊡1⊚=1˜◿ⁿ◡⋅⇡ - -┌─╴test - ⍤⤙≍ 2 ModInv 4 7 -└─╴ - -# Binomial coefficient aka N choose K -# ? K N -# Deprecated! Use `⧅<` instead. -Binom ← /×÷+1⟜-⇡ - -# Convert a number X to a continued fraction to N terms. -# -# Use `°CFrac` to convert to a number from a continued fraction. -# ? N X -CFrac ← ⌅(⍥⊃(÷⤚◿1)⌊|⊃⧻/(+˜÷1)⇌) - -┌─╴test - ⍤⤙≍ [3 7 15 1 292 1 1 1] CFrac 8 π - ⍤⤙≍ e ◌°CFrac CFrac 100 e -└─╴ - -# Divisors of N (including 1 and N) -# The values are in increasing order and distinct. -# ? N -Divisors ← ◌°▽⊂⊃÷⇌ ▽=0⊸⊃◿÷ +1⇡⌊⊸√ - -┌─╴test - ⍤⤙≍ [1] Divisors 1 - ⍤⤙≍ [1 2 3 4 6 9 12 18 36] Divisors 36 - ⍤⤙≍ [1 2 4 5 8 10 20 25 40 50 100 125 200 250 500 1000] Divisors 1000 -└─╴ - -# -- Probability -- - -# Error function -Erf ← ( - ˜÷1+1×0.3275911 ⟜(˜ⁿe¯×.) ⌵⟜± - :[1.061405429 ¯1.453152027 1.421413741 - ¯0.284496736 0.254829592 - ]:0 - ׬×∧(×⊙+)¤ -) - -┌─╴test - ⍤⤙≍ 0 Erf 0 - ⍤⤙≍ 1 Erf 1000 - ⍤⤙≍ ¯1 Erf ¯1000 - ⍤⤙(<1e-6⌵-) 0.5204998778130465 Erf 0.5 - ⍤⤙(<1e-6⌵-) ¯0.5204998778130465 Erf ¯0.5 -└─╴ - -# Seeded random indices from a distribution array -# -# Given a seed, a shape, and a probability distribution array -# of any rank containing positive numbers, `DistRand` normalizes -# the distribution if necessary so it sums to 1, then returns -# an array of deep indices into the distribution arrays, chosen -# randomly weighted by the distribution. The generated random -# indices will fill the shape given to the function. If the -# distribution array is rank 1, the output will have the shape -# given. If the distribution array is rank >1, the output will -# have a shape equal to the shape given suffixed with the rank of -# the distribution array. -# -# ```uiua -# # Generate random indices in the shape 2_3 with a seed of 8 -# DistRand [0.1 0.4 0.3 0.2] 2_3 8 -# ## ╭─ -# ## ╷ 1 2 3 -# ## 2 1 2 -# ## ╯ -# ``` -# Indices ? Distribution Shape Seed -DistRand ← ˜⍜♭≡(⊢⊚>)⊓¤gen⍜♭\+÷/+⊸♭ - -# Box-Muller transform -# -# Converts uniformly distributed pairs of input values to -# standard normally distributed pairs of output values -BoxMuller ← ∩×⤙⊓°∠∘×τ:√ׯ2°ₑ¬ - -# Generate a 2 dimensional square Gaussian kernel -# ? Size StandardDeviation -Gaussian ← ÷/+⊸♭ₑ¯÷2˙ט÷⌵⊞ℂ.-÷2-1⟜⇡ - -# Binomial distribution -# -# Probability that n Bernoulli trials each with success probability p will amount to X successes -# ? p n X -BinomPmf ← ××⊃(≡₀⧅>|𝄐ⁿ|ⁿ⊓-¬) ⤚⋅: -# Cumulative binomial distribution -# -# Probability that n Bernoulli trials each with success probability p will amount to X or fewer successes -# -# **NOTE:** This function only accepts scalars for X. Use `each` or `rows` if multiple X values are desired -# ? p n X -BinomCmf ← /+BinomPmf⊓∩¤(⇡+1) - -# Geometric distribution -# -# Probability of X failures before the first success of repeated trials with success probability p -# ? p X -GeomPmf ← טⁿ¬⟜: -# Cumulative geometric distribution -# -# Probability of X or fewer failures before the first success of repeated trials with success probability p -# ? p X -GeomCmf ← ⍜¬˜ⁿ⊙(+1) - -# Poisson distribution -# -# Probability of X occurrences of an unlikely event over many trials with expected value λ -# ? λ X -PoissonPmf ← ÷⊙×⊃(⋅Fact|˜ⁿ|ₑ¯) -# Cumulative Poisson distribution -# -# Probability of X or fewer occurrences of an unlikely event over many trials with expected value λ -# ? λ X -PoissonCmf ← /+PoissonPmf⊓¤(⇡+1) - -# Normal distribution -# -# Probability density of a gaussian/bell curve with mean μ and standard deviation σ -# ? σ μ X -NormalPdf ← ÷⊃(×√τ|ₑ÷2¯˙×÷⊙-) -# Cumulative normal distribution -# -# Probability that a normally distributed random variable with mean μ and standard deviation σ is less than X -# ? σ μ X -NormalCdf ← ÷2+1Erf÷×√2⊙- - -# -- Misc -- - -# Po-Shen quadratic solver -# -# Returns roots as a list -# -# Outputs complex-typed numbers only if the roots are complex -# ? A B C -Quad ← ⍥R⌵↥₀:⊟⊃-+⊙:√⟜±˜-˙×⟜:ℂ₀¯÷₂∩⌞÷ - -┌─╴test - ⍤⤙≍ [1 2] Quad 1 ¯3 2 - ⍤⤙≍ [¯i i] Quad 1 0 1 - ⍤⤙≍ ∩⍆ [ℂ3 ¯1 ℂ¯1 2] ⁅₃ Quad 1 ℂ¯2 ¯1 ℂ7 1 -└─╴ - -# Powerset of a list -PSet ← ⍚▽⋯⇡˜ⁿ2⧻⟜¤ - -# Rank-polymorphic fast fourier transform -# Deprecated! `fft` has been updated to be rank-polymorphic by default. Use that instead. -RPFFT ← ⌅(⍥(⍉fft)⧻△.|⍥°(⍉fft)⧻△.) - -# Rank-polymorphic convolution using fast fourier transform -┌─╴FFTConvolve - # Full convolution wherever any overlap between the inputs exists - Full ← ⍥R=0↥⊃∩type(×√/×⊸△⍜∩fft×∩⌞⬚0↙-1+◡∩△) - Call ← Full - # Convolution of only instances of complete overlap between inputs - Valid ← ⍥R=0↥⊃∩type(↘-+1⌵⊙⟜(×√/×⊸△⍜∩fft×∩⌞⬚0↙)⊃-↥◡∩△) - # Convolution that maintains the largest of the input dimensions - Same ← ↙⟜(↻⌊÷₂-)⊙⊸△↥⊃∩△Full -└─╴ diff --git a/exercise4/uiua-modules/Omnikar/uiua-math/todo.md b/exercise4/uiua-modules/Omnikar/uiua-math/todo.md deleted file mode 100644 index eff2e35..0000000 --- a/exercise4/uiua-modules/Omnikar/uiua-math/todo.md +++ /dev/null @@ -1,3 +0,0 @@ -- Runge-Kutta-Fehlberg variable step size numerical integration macro? -- Improve matrix product `anti`s to use direct Gaussian elimination instead of going through the inverse first - - This will help prevent numerical imprecision errors for large matrices