Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
ae53e67
Implemented First Level Parallelization
Apr 21, 2026
d2a3d78
Fixed line in solvePolyRecursive
Apr 25, 2026
f73e20e
Fixed line that updates 'resultsAll'
Apr 25, 2026
c648e8d
Updated solve docstring and added unit_test
Apr 25, 2026
c70e194
Parallel Attempt 2
Apr 27, 2026
e12b3d6
Move old test codes and add test code for parallelization
May 22, 2026
4b1019e
Moved general parallelization code
May 22, 2026
a757e7e
Add git action workflow dispatch
May 22, 2026
ad5f421
Removed unused imports
May 22, 2026
ea6d7f0
Switch to uv
May 22, 2026
444493f
Update pyproject
May 26, 2026
3b28cd7
Updating for uv
May 26, 2026
d85c5e1
Fixed python version
May 26, 2026
794489e
Fix for uv project
May 26, 2026
62bb602
Allow build for UV
May 26, 2026
4cffc11
Regenerate uv.lock after adding build backend
May 26, 2026
d0c4507
Remove legacy packaging
May 26, 2026
8590a74
Clean up source files
May 26, 2026
ac64a8b
Source file clean up
May 26, 2026
64c5516
Add back requirements_dev
May 26, 2026
46cbeb8
Add dependabot auto update for uv
May 26, 2026
f4b5369
Clean up source files
May 26, 2026
b97e4bf
Cleaning up source files
May 26, 2026
22e388f
Cleaning up docs
May 26, 2026
b837523
Regenerate uv.lock to include sphinx docs group
May 26, 2026
1976109
Fix dependabot.yml
May 26, 2026
00adc41
Update pyproject.toml
May 26, 2026
c569f56
Update README
May 26, 2026
d4cea8a
Update README
May 26, 2026
4a7e35c
Changed docs.yml to automatically update documentation page
May 26, 2026
c62cf49
Updated instructions for CombinedNotebook
May 26, 2026
381fa66
Move tests and test results
May 26, 2026
4375979
Fixed test filepath
May 26, 2026
7550770
Fix code so it catches singular roots as well
May 29, 2026
52913f1
Docstring fixes
May 29, 2026
173dbe3
Merge branch 'main' into main
wlgns0330 Jun 3, 2026
f2607dc
Remove insignificant test case for efficient testing
Jun 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"

- package-ecosystem: "uv"
directory: "/"
schedule:
interval: "weekly"
36 changes: 19 additions & 17 deletions .github/workflows/Unit_Tests.yml
Original file line number Diff line number Diff line change
@@ -1,33 +1,35 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Unit_Tests

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

workflow_dispatch:
permissions:
contents: read

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v3

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
python-version: "3.11"
- name: Install dependencies
enable-cache: true

- name: Set up Python 3.14t
uses: astral-sh/setup-uv@v5
with:
python-version: "3.14t"

- name: Check Python version
run: |
python -m pip install --upgrade pip
pip install pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
uv run python --version
uv run python -c "import sysconfig; print('Py_GIL_DISABLED =', sysconfig.get_config_var('Py_GIL_DISABLED'))"

- name: Install dependencies
run: uv sync --frozen

- name: Test with pytest
run: |
pytest tests --ignore=tests/_old_unit_tests
run: uv run pytest tests --ignore=tests/_old_unit_tests
42 changes: 42 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Docs

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]

permissions:
contents: read
pages: write
id-token: write

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: "3.14t"
- name: Install dependencies
run: uv sync --frozen --group docs
- name: Build docs
run: uv run sphinx-build docs/source docs/_build/html
- name: Upload pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/_build/html

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
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.14t
27 changes: 0 additions & 27 deletions .travis.yml

This file was deleted.

22 changes: 12 additions & 10 deletions CombinedNotebook.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -41,19 +41,21 @@
"source": [
"## Setup YRoots\n",
"\n",
"First, in a terminal (Linux/Unix/Mac), navigate to the directory in which you wish to install `yroots`, then download it from github with the following command:\n",
"In a terminal, clone the repository and enter the directory:\n",
"\n",
" ```git\n",
" git clone https://github.com/tylerjarvis/RootFinding.git \n",
" ```\n",
" \n",
"Then make the `yroots` module availabe to Python, use the following command: \n",
" git clone https://github.com/tylerjarvis/RootFinding.git\n",
" cd RootFinding\n",
"\n",
" ```\n",
" pip install -e ./RootFinding\n",
" ```\n",
"Install `yroots` and all its dependencies using [uv](https://docs.astral.sh/uv/):\n",
"\n",
"In addition, you will need to have `numpy`, `numba`, and `scipy` installed in order to run YRoots. See the documentation for the corresponding packages to learn how to install any of these.\n",
" uv sync\n",
"\n",
"This installs Python 3.14t (the free-threaded build required by YRoots) along with `numpy`, `numba`, `scipy`, and all other dependencies into an isolated environment at `.venv/`.\n",
"To run this notebook, open it in your editor of choice (VS Code, JupyterLab, classic Jupyter) and select `.venv/bin/python` as the kernel.\n",
"\n",
"If you prefer plain `pip` and already have Python 3.14t with `pip` installed, you can install YRoots directly:\n",
"\n",
" pip install -e .\n",
"\n",
"<u>Before proceeding in this tutorial, you will need to complete the above process and run the following import statements: </u>"
]
Expand Down
43 changes: 27 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

YRoots is a Python package designed for numerical rootfinding of multivariate systems of equations.

For a tutorial on YRoots syntax, set-up and examples on how to use it with different function systems, see [YRoots Tutorial](https://github.com/tylerjarvis/RootFinding/blob/main/YRootsTutorial.ipynb) and for a more detailed demonstration of the code's capabilities on solving more challenging problems, see [YRoots Demo](https://github.com/tylerjarvis/RootFinding/blob/main/YRootsDemo.ipynb).
For a tutorial on YRoots syntax, set-up, and examples on how to use it with different function systems, see [Combined Notebook](https://github.com/tylerjarvis/RootFinding/blob/main/CombinedNotebook.ipynb).

Documentation is posted at https://tylerjarvis.github.io/RootFinding/

Expand All @@ -13,26 +13,37 @@ This project was supported in part by the National Science Foundation, grant num
<!-- [![PyPI version](https://badge.fury.io/py/RootFinding.svg)](https://badge.fury.io/py/RootFinding) -->
<!-- [![Code Health](https://landscape.io/github/tylerjarvis/RootFinding/pypackage/landscape.svg)](https://landscape.io/github/tylerjarvis/RootFinding/pypackage) -->

<!-- [![Build Status](https://travis-ci.com/tylerjarvis/RootFinding.svg?branch=master)](https://travis-ci.com/tylerjarvis/RootFinding) -->
<!-- [![codecov](https://codecov.io/gh/mtmoncur/tylerjarvis/branch/master/graphs/badge.svg)](https://codecov.io/gh/tylerjarvis/RootFinding) -->
<!-- [![PyPI version](https://badge.fury.io/py/RootFinding.svg)](https://badge.fury.io/py/RootFinding) -->
<!-- [![Code Health](https://landscape.io/github/tylerjarvis/RootFinding/pypackage/landscape.svg)](https://landscape.io/github/tylerjarvis/RootFinding/pypackage) -->

### Requirements
At least:
* Python 3.10
* Pip 21.1
* Numpy 1.22.0
* Numba 0.37.0
* Scipy 1.10.0
* Sympy 1.5.1
* Python 3.14t (free-threaded build — see note below)
* NumPy ≥ 2.4.4
* Numba ≥ 0.65.1
* SciPy ≥ 1.17.1
* SymPy ≥ 1.12

> **Why 3.14t?** YRoots requires the free-threaded build of Python 3.14, which runs without the Global Interpreter Lock (GIL) for better parallelism. The `t` suffix identifies this build — it is a different download from the standard Python 3.14.

## Installation

`$ pip install git+https://github.com/tylerjarvis/RootFinding.git`
With uv (recommended):
```
uv python install 3.14t
uv pip install git+https://github.com/tylerjarvis/RootFinding.git
```
Or clone and install for development:

```
git clone https://github.com/tylerjarvis/RootFinding.git
cd RootFinding
uv sync
```

The package can then by imported using `import yroots`.
With pip (requires Python 3.14t already installed):

```
pip install git+https://github.com/tylerjarvis/RootFinding.git
```

The package can then be imported using `import yroots`.
(We are currently working on adding the yroots package to The Python Package Index)

## Usage
Expand All @@ -54,7 +65,7 @@ b = np.array([0,1]) #upper bounds on x and y
yr.solve([f,g],a,b)
```

If the system includes polynomials, there are specialized `Polynomial` objects which may be allow for faster solving. See [Combined Notebook](https://github.com/tylerjarvis/RootFinding/blob/main/CombinedNotebook.ipynb) for more details.
If the system includes polynomials, there are specialized `Polynomial` objects which may allow for faster solving. See [Combined Notebook](https://github.com/tylerjarvis/RootFinding/blob/main/CombinedNotebook.ipynb) for more details.


## Examples of Applications
Expand Down
4 changes: 0 additions & 4 deletions docs/.buildinfo

This file was deleted.

Binary file removed docs/.doctrees/ChebyshevApproximator.doctree
Binary file not shown.
Binary file removed docs/.doctrees/ChebyshevSubdivisionSolver.doctree
Binary file not shown.
Binary file removed docs/.doctrees/CombinedSolver.doctree
Binary file not shown.
Binary file removed docs/.doctrees/MultiCheb.doctree
Binary file not shown.
Binary file removed docs/.doctrees/MultiPower.doctree
Binary file not shown.
Binary file removed docs/.doctrees/QuadraticCheck.doctree
Binary file not shown.
Binary file removed docs/.doctrees/environment.pickle
Binary file not shown.
Binary file removed docs/.doctrees/index.doctree
Binary file not shown.
Binary file removed docs/.doctrees/modules.doctree
Binary file not shown.
Binary file removed docs/.doctrees/polynomial.doctree
Binary file not shown.
1 change: 0 additions & 1 deletion docs/.nojekyll

This file was deleted.

Loading
Loading