Skip to main content

sagebrush

Fast, certified engines for research mathematics, in Rust, for Python. Permissively licensed (MIT OR Apache-2.0): use them anywhere, in anything, from agents and notebooks to products. No C libraries; one abi3 wheel per platform covers Python 3.9 and later.

This is an early release of Sagebrush, which also runs in the browser at sagebrush.space.

>>> from sagebrush import nf, mf, ap, poly, linalg

>>> nf.bnf([-11, 0, 0, 1])              # Q[x]/(x^3 - 11): class group, regulator
{'cyc': [2], 'degree': 3, 'disc': -3267, 'h': 2, 'r1': 1, 'r2': 1, 'regulator': '5.5872066260609077619', 'w': 2}

>>> nf.factor_integer(2**128 + 1)       # ECM
[(59649589127497217, 1), (5704689200685129054721, 1)]

>>> nf.primes_above([-11, 0, 0, 1], 5)  # 5 = P_1 P_2 with residue degrees 1, 2
[{'e': 1, 'f': 1, 'p': 5, 'pi': [-1, 1, 0], 'pi_den': 1}, {'e': 1, 'f': 2, 'p': 5, 'pi': [1, 1, 1], 'pi_den': 1}]

>>> nf.lll([[1, 1, 1], [-1, 0, 2], [3, 5, 6]])
[[0, 1, 0], [1, 0, 1], [-1, 0, 2]]

>>> poly.factor([5, -1, -1, 1])         # x^3 - x^2 - x + 5 over Z
(1, [([5, -1, -1, 1], 1)])

>>> linalg.det([[2, 7, 1], [8, 2, 8], [1, 8, 2]]), linalg.charpoly([[0, 1], [-1, 0]])
(-114, [1, 0, 1])

>>> linalg.solve([[2, 1], [1, 3]], [[1], [2]])   # exact, over QQ
[[Fraction(1, 5)], [Fraction(3, 5)]]

>>> d = mf.newforms(389, 2, bound=6)    # newform orbits of S_2(Gamma0(389))
>>> d["status"], [(o["letter"], o["dim"]) for o in d["newforms"]]
('proven', [('a', 1), ('b', 2), ('c', 3), ('d', 6), ('e', 20)])

Polynomials are coefficient lists, constant term first.

Sage-compatible: sagebrush.sage

For Sage users, sagebrush.sage is a namespace with Sage's names, behaviour and printing, for what Sagebrush implements: number fields, polynomials, matrices, modular forms and symbols, elliptic curves, Dirichlet characters, integers, plotting.

>>> from sagebrush.sage import *
>>> factor(2026)
2 * 1013
>>> x = PolynomialRing(QQ, 'x').gen()
>>> K = NumberField(x**3 + 17*x + 1, 'a')
>>> K.class_group()
Class group of order 3 with structure C3 of Number Field in a with defining polynomial x^3 + 17*x + 1
>>> K.regulator()
2.83341678218613
>>> K.factor(11)
(Fractional ideal (11, a + 3))^2 * (Fractional ideal (11, a + 5))
>>> Integer(2026).is_prime(), Integer(2026) / 4
(False, 1013/2)
>>> EllipticCurve('389a1').rank()
2

This is plain Python, without Sage's preparser: write x**3 (x^3 is xor in Python, and raises an error here as in Sage), Integer(2)/3 for a rational (2/3 is a float), and K = NumberField(f, 'a'); a = K.gen() for K.<a> = NumberField(f). Integers from Integer(n) or ZZ(n) have Sage's methods. The output is checked line by line against Sage itself: Sage's own preparser turns Sagebrush's Sage test files into plain Python, and their output under sagebrush.sage must equal Sage's.

Engines

  • sagebrush.nf: number fields: maximal orders, prime ideals, class groups, units and regulators (assuming GRH, with a field-specific bound for the generators), quadratic class groups to |D| ~ 10^60; integer factoring (ECM); Hermite and Smith forms, LLL; complex roots to any precision.
  • sagebrush.mf: modular forms of weight k >= 2 with character: dimensions, exact Hecke characteristic polynomials, newform orbits, trace forms.
  • sagebrush.modsym: weight-2 modular symbols for Gamma0(N).
  • sagebrush.ap: traces of Frobenius a_p of elliptic curves over Q.
  • sagebrush.poly: factoring in Z[x] and F_p[x]; products, gcds and exact division in Z[x].
  • sagebrush.linalg: exact matrices over ZZ and QQ: det, rank, rref, solve, inverse, charpoly, kernel (multimodular and p-adic, every answer certified).

Results are checked against independent systems: PARI for class groups, Sage and Magma for the rest, and LMFDB for modular forms.

License

Copyright (c) 2026 SageMath, Inc. Licensed under either of the Apache License, Version 2.0 or the MIT license, at your option.

Metadata

Release files for sagebrush 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sagebrush 0.4.0
File Size Uploaded
sagebrush-0.4.0.tar.gz 517.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for sagebrush 0.4.0
File
sagebrush-0.4.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
sagebrush-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl CPython 3.9 abi3 Linux glibc 2.28+ x86-64 Details
sagebrush-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details
sagebrush-0.4.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
sagebrush-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 7.9 MB

Release files / sagebrush-0.4.0.tar.gz

Download URL sagebrush-0.4.0.tar.gz
Size 517.5 kB
Tags Source
SHA-256 checksum
How to use checksums
427ffd513a4b929c14a5f3044dc14c6de4ab7198459df098449cb982f188cf6a
BLAKE2b-256 checksum
How to use checksums
0d3803eb147aa9e489a957845496f3383570083e84f32d63e131074dccc196d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / sagebrush-0.4.0-cp39-abi3-win_amd64.whl

Download URL sagebrush-0.4.0-cp39-abi3-win_amd64.whl
Size 1.5 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
d25dbfb63777647d70f3319e785aa4e8b6cac58aabba152936307000d0413644
BLAKE2b-256 checksum
How to use checksums
5cbc897ed3e9176fb8ace65c9ce6c8e21ff6474ba87d5d671e3a244c22fb6786
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / sagebrush-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl

Download URL sagebrush-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl
Size 1.6 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
d751cc3756020f2eaa3053d0fad05e0e83822d1e2a26a74bc2253ff19ae40acc
BLAKE2b-256 checksum
How to use checksums
3414088979e4436c00609b840d31775dd515f9271389d05e7d53b3af8a301de1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / sagebrush-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl

Download URL sagebrush-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl
Size 1.4 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
f2e30247f539bcd21d823ce62c79916d779f9ae0b4e9d99f1da1504bb3484532
BLAKE2b-256 checksum
How to use checksums
112e6e5bee9889e7f3e8f5d98acf580c25d2d7a3f6275f8c7cc7944bc62310dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / sagebrush-0.4.0-cp39-abi3-macosx_11_0_arm64.whl

Download URL sagebrush-0.4.0-cp39-abi3-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9f12397f221c3b96886ae712f8e41e3ed1890a5aa04816a40887e679d08ece0c
BLAKE2b-256 checksum
How to use checksums
a14220b94bda36a899d5de219d259fb82a6054dfeee6639c5e5406909e6dc8f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / sagebrush-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl

Download URL sagebrush-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
fb6fdf9136c014bdfb591b8d347210c80b34a7eb9e230e4ee38a2ba3ed4ab0cc
BLAKE2b-256 checksum
How to use checksums
06cabdc372b24de2085cb10bca8a27007d90d6b5399035d64cfe2ac1a4f69c50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

0.7.2

6 release files

0.7.1

6 release files

0.7.0

6 release files

0.6.0

6 release files

0.5.1

6 release files

0.5.0

6 release files

This release

0.4.0 This release

6 release files

0.3.0

6 release files

0.2.2

6 release files

0.2.1

6 release files

0.2.0

6 release files

0.1.0

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page