Skip to content
Merged
Changes from all commits
Commits
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
27 changes: 15 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Python 3](http://img.shields.io/badge/python-3-blue.svg)](https://docs.python.org/3/)
[![This project supports Python 3.10+](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://python.org/downloads)
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Shields.io badge URL includes a literal "+" in the path ("3.10+"). Shields generally expects special characters to be URL-encoded; otherwise the badge can fail to render in some contexts. Consider encoding it as "%2B" ("3.10%2B") to make the badge URL robust.

Copilot uses AI. Check for mistakes.
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/theochem/matrix-permanent/actions/workflows/pull_request.yml)
[![GNU GPLv3](https://img.shields.io/badge/license-%20%20GNU%20GPLv3%20-green?style=plastic)](https://www.gnu.org/licenses/gpl-3.0.en.html)

Expand Down Expand Up @@ -37,9 +37,10 @@ Compute the permanent of a matrix using the best algorithm for the shape of the
Compute the permanent of a matrix combinatorically.

**Formula:**
```math

$$
\text{per}(A) = \sum_{\sigma \in P(N,M)}{\prod_{i=1}^M{a_{i,{\sigma(i)}}}}
```
$$

**Parameters:**

Expand All @@ -55,29 +56,31 @@ Compute the permanent of a matrix combinatorically.

**Formula:**

```math
$$
\text{per}(A) = \frac{1}{2^{N-1}} \cdot \sum_{\delta \in \left[\delta_1 = 1,~ \delta_2 \dots \delta_N=\pm1\right]}{
\left(\sum_{k=1}^N{\delta_k}\right){\prod_{j=1}^N{\sum_{i=1}^N{\delta_i a_{i,j}}}}}
Comment on lines 60 to 61
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These equations are laid out across multiple lines in Markdown, but KaTeX/GitHub math rendering treats newlines inside $$ ... $$ as whitespace (not line breaks), so this will likely render as a single very long line and overflow on GitHub. Consider using an aligned/multline environment with explicit \\ line breaks to preserve the intended formatting.

Suggested change
\text{per}(A) = \frac{1}{2^{N-1}} \cdot \sum_{\delta \in \left[\delta_1 = 1,~ \delta_2 \dots \delta_N=\pm1\right]}{
\left(\sum_{k=1}^N{\delta_k}\right){\prod_{j=1}^N{\sum_{i=1}^N{\delta_i a_{i,j}}}}}
\begin{aligned}
\text{per}(A) &= \frac{1}{2^{N-1}} \cdot \sum_{\delta \in \left[\delta_1 = 1,~ \delta_2 \dots \delta_N=\pm1\right]}{ \\
&\quad \left(\sum_{k=1}^N{\delta_k}\right){\prod_{j=1}^N{\sum_{i=1}^N{\delta_i a_{i,j}}}}}
\end{aligned}

Copilot uses AI. Check for mistakes.
```
$$

**Additional Information:**
The original formula has been generalized here to work with $M$-by-$N$ rectangular permanents with
$M \leq N$ by use of the following identity (shown here for $M \geq N$):

```math
$$
\begin{aligned}
\text{per}\left(\begin{matrix}a_{1,1} & \cdots & a_{1,N} \\ \vdots & \ddots & \vdots \\ a_{M,1} & \cdots & a_{M,N}\end{matrix}\right) = \frac{1}{(M - N + 1)!} \cdot \text{per}\left(\begin{matrix}a_{1,1} & \cdots & a_{1,N} & 1_{1,N+1} & \cdots & 1_{1,M} \\ \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\ a_{M,1} & \cdots & a_{M,N} & 1_{M,N+1} & \cdots & 1_{M,M}\end{matrix}\right)
```
\end{aligned}
$$
Comment on lines +68 to +72
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This matrix identity is extremely wide; with $$ ... $$ and no explicit line breaks it will likely overflow horizontally in GitHub’s renderer. Consider splitting it across multiple lines using aligned/multline (and \\) so it remains readable on narrow screens.

Copilot uses AI. Check for mistakes.

This can be neatly fit into the original formula by extending the inner sums over $\delta$ from $[1,M]$ to $[1,N]$:

```math
$$
\text{per}(A) = \frac{1}{2^{N-1}} \cdot \frac{1}{(N - M + 1)!}\cdot \sum_{\delta \in \left[\delta_1 = 1,~ \delta_2 \dots \delta_N=\pm1\right]}{
\left(\sum_{k=1}^N{\delta_k}\right)
\prod_{j=1}^N{\left(
\sum_{i=1}^M{\delta_i a_{i,j}} + \sum_{i=M+1}^N{\delta_i}
\right)}
}
```
$$

**Parameters:**

Expand All @@ -93,7 +96,7 @@ This can be neatly fit into the original formula by extending the inner sums ove

**Formula:**

```math
$$
\text{per}(A) = \sum_{k=0}^{M-1}{
{(-1)}^k
\binom{N - M + k}{k}
Expand All @@ -103,7 +106,7 @@ This can be neatly fit into the original formula by extending the inner sums ove
}
}
}
```
$$
Comment on lines 99 to +109
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This multi-line formula will render as a single line under KaTeX unless you add an aligned/multline environment and explicit \\ breaks. As-is, it’s likely to overflow horizontally and be hard to read on GitHub.

Copilot uses AI. Check for mistakes.

**Parameters:**

Expand Down Expand Up @@ -181,4 +184,4 @@ is with pip.
# License

This code is distributed under the GNU General Public License version 3 (GPLv3).
See <http://www.gnu.org/licenses/> for more information.
See <https://www.gnu.org/licenses/> for more information.
Loading