pfapack
: Efficient numerical computation of the Pfaffian for dense and banded skew-symmetric matricesCode and algorithms are taken from arXiv:1102.3440 which is authored by Michael Wimmer.
Recommended way (because it includes faster C/FORTRAN bindings)
conda install -c conda-forge pfapack
Alternatively use
pip install pfapack
from pfapack import pfaffian as pf
import numpy.matlib
A = numpy.matlib.rand(100, 100)
A = A - A.T
pfa1 = pf.pfaffian(A)
pfa2 = pf.pfaffian(A, method="H")
pfa3 = pf.pfaffian_schur(A)
print(pfa1, pfa2, pfa3)
If installed with conda
, C/FORTRAN code is included with Python bindings, use it like:
from pfapack.ctypes import pfaffian as cpf
pfa1 = cpf(A)
pfa2 = cpf(A, method="H")
print(pfa1, pfa2)
If you have used pfapack
in your research, please cite it using the following bib
entry:
@article{wimmer2012algorithm,
title={Efficient numerical computation of the pfaffian for dense and banded skew-symmetric matrices},
author={Michael Wimmer},
journal={ACM Transactions on Mathematical Software (TOMS)},
volume={38},
number={4},
pages={1--17},
year={2012},
publisher={ACM New York, NY, USA}
}
MIT License