namespace tum::device¶
Overview¶
namespace device {
// global functions
bool bonded(const int* deg, const int* cols, int nAtoms, int kMax, int a, int b);
bool inSix(const int* r, int atom);
bool shareAtoms(const int* a, const int* b);
int commonCount(const int* a, const int* b);
bool commonInThree(const int* a, const int* b, const int* c);
bool shareNeigh(const int* deg, const int* cols, int nAtoms, int kMax, int a, int b);
int hopsAtMost(const int* deg, const int* cols, int nAtoms, int kMax, int a, int b, int cap);
bool hopBoundPrimitiveSix(const int* r, const int* deg, const int* cols, int nAtoms, int kMax);
bool basalNeighbours(const int* deg, const int* cols, int nAtoms, int kMax, int n1, int n2, int atomOne, int atomTwo);
bool notNeighboursOfRing(const int* deg, const int* cols, int nAtoms, int kMax, const int* trip, const int* ring);
bool basalConditions(const int* deg, const int* cols, int nAtoms, int kMax, const int* b1, const int* b2);
int firstRingThrough(const int* A, int nA, const int* B, int nB, const int* C, int nC, int skipA, int skipB);
int ringsThrough(const int* A, int nA, const int* B, int nB, const int* C, int nC, int skipA, int skipB, int* out, int cap);
int fetchAdd(int* p);
void enumSixFrom(int i, const int* deg, const int* cols, int nAtoms, int kMax, int maxRings, int* nRings, int* ringAtoms, int* dropped);
void invertOneRing(int r, const int* nRings, const int* ringAtoms, int nAtoms, int maxPer, int* throughCount, int* through);
void sortThroughRow(int* row, int n);
void emitBasalFrom(int i, const int* nRings, const int* ringAtoms, const int* deg, const int* cols, const int* throughCount, const int* through, int nAtoms, int kMax, int maxPer, int maxPairs, int* nPairs, int* pairs);
void applyHcPair(int p, const int* nPairs, const int* pairs, const int* ringAtoms, const int* throughCount, const int* through, int nAtoms, int maxPer, int* hc);
void ddcFrom(int i, const int* nRings, const int* ringAtoms, const int* throughCount, const int* through, const int* hc, int nAtoms, int maxPer, int* ddc);
void atomIceFrom(int r, const int* nRings, const int* ringAtoms, const int* hc, const int* ddc, int nAtoms, int* atomHc, int* atomDdc);
} // namespace device
Detailed Documentation¶
Global Functions¶
int hopsAtMost(const int* deg, const int* cols, int nAtoms, int kMax, int a, int b, int cap)
Graph distance from a to b when it is at most cap, else -1.
cap is 1 or 2: the Franzblau reject bound for a six-ring.
bool hopBoundPrimitiveSix(const int* r, const int* deg, const int* cols, int nAtoms, int kMax)
Hop-bounded Franzblau SP test on a six-cycle of the bond graph.
void enumSixFrom(int i, const int* deg, const int* cols, int nAtoms, int kMax, int maxRings, int* nRings, int* ringAtoms, int* dropped)
Enumerate hop-bound primitive six-rings whose lowest vertex is i.