소스 검색

Silly mistakes

master
Pete Shadbolt 9 년 전
부모
커밋
08f69afe28
1개의 변경된 파일22개의 추가작업 그리고 0개의 파일을 삭제
  1. +22
    -0
      src/permanents.h

+ 22
- 0
src/permanents.h 파일 보기

@@ -0,0 +1,22 @@
// Ryser's algorithm
static npy_complex128 perm_ryser(PyArrayObject *submatrix) {
int n = (int) PyArray_DIM(submatrix, 0);
npy_complex128 rowsum, rowsumprod;
npy_complex128 perm = complex_zero;
int exp = 1 << n;
int i, y, z;
for (i=0; i<exp; ++i) {
rowsumprod = complex_one;
for (y=0; y<n; ++y) {
rowsum = complex_zero;
for (z=0; z<n; ++z) {
if ((i & (1 << z)) != 0) { complex_inc(&rowsum, SM(z, y)); }
}
complex_multiply(&rowsumprod, rowsum);
}
complex_inc(&perm, complex_float_prod(rowsumprod, bitparity(i)));
}
if (n%2 == 1) {perm=complex_float_prod(perm, -1);}
return perm;
}


불러오는 중...
취소
저장