InChI
 
Loading...
Searching...
No Matches
ichican2.c File Reference
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <time.h>
#include "mode.h"
#include "ichicano.h"
#include "ichicomn.h"
#include "ichitime.h"
#include "bcf_s.h"
+ Include dependency graph for ichican2.c:

Data Structures

struct  tagUnorderedPartition
 
struct  tagCell
 
struct  tagTransposition
 
struct  tagCTable
 
struct  tagkLeast
 
struct  tagNodeValues
 

Macros

#define MAX_CELLS   32766
 
#define MAX_NODES   32766
 
#define MAX_SET_SIZE   32766 /*16384*/
 
#define NORMALLY_ALLOWED_MAX_SET_SIZE   2048
 
#define MAX_LAYERS   100
 
#define SEPARATE_CANON_CALLS   0
 
#define INCHI_CANON_INFINITY   0x7FFF
 
#define INCHI_CANON_MIN
 
#define EMPTY_CT   0
 
#define EMPTY_H_NUMBER   (INCHI_CANON_INFINITY-1)
 
#define BASE_H_NUMBER   ((INCHI_CANON_INFINITY-1)/2)
 
#define EMPTY_ISO_SORT_KEY   LONG_MAX
 
#define CanonGraph01   CanonGraph
 
#define CanonGraph02   CanonGraph
 
#define CanonGraph03   CanonGraph
 
#define CanonGraph04   CanonGraph
 
#define CanonGraph05   CanonGraph
 
#define CanonGraph06   CanonGraph
 
#define CanonGraph07   CanonGraph
 
#define CanonGraph08   CanonGraph
 
#define CanonGraph09   CanonGraph
 
#define CanonGraph10   CanonGraph
 
#define CanonGraph11   CanonGraph
 
#define CanonGraph12   CanonGraph
 
#define QZFIX_OK(X)   ((X)<=0)
 
#define ELEM_NAME_LEN   2
 
#define FREE_CONTABLE(X)   if (X) {CTableFree( X);inchi_free( X);}
 
#define FREE_ARRAY(X)   if (X) inchi_free( X);
 
#define FREE_CONTABLE(X)   if (X) {CTableFree( X);inchi_free( X);}
 
#define FREE_ARRAY(X)   if (X) inchi_free( X);
 

Typedefs

typedef AT_NUMB Node
 
typedef NEIGH_LIST Graph
 
typedef struct tagUnorderedPartition UnorderedPartition
 
typedef struct tagCell Cell
 
typedef struct tagTransposition Transposition
 
typedef struct tagCTable ConTable
 
typedef struct tagkLeast kLeast
 
typedef struct tagNodeValues NV
 

Functions

int CanonGraph (struct tagINCHI_CLOCK *ic, CANON_GLOBALS *pCG, int n, int n_tg, int n_max, int bDigraph, Graph *G, Partition pi[], AT_RANK *nSymmRank, AT_RANK *nCanonRank, AT_NUMB *nAtomNumberCanon, CANON_DATA *pCD, CANON_COUNTS *pCC, ConTable **pp_zb_rho_inp, ConTable **pp_zb_rho_out, int LargeMolecules)
 
void CtPartFill (Graph *G, CANON_DATA *pCD, Partition *p, ConTable *Ct, int k, int n, int n_tg, int n_max)
 
void CtPartClear (ConTable *Ct, int k)
 
void CtPartINCHI_CANON_INFINITY (ConTable *Ct, S_CHAR *cmp, int k)
 
int CtPartCompare (ConTable *Ct1, ConTable *Ct2, S_CHAR *cmp, kLeast *kLeastForLayer, int k, int bOnlyCommon, int bSplitTautCompare)
 
int CtFullCompare (ConTable *Ct1, ConTable *Ct2, int bOnlyCommon, int bSplitTautCompare)
 
void CtPartCopy (ConTable *Ct1, ConTable *Ct2, int k)
 
void CtFullCopy (ConTable *Ct1, ConTable *Ct2)
 
int CtFullCompareLayers (kLeast *kLeastForLayer)
 
int CtCompareLayersGetFirstDiff (kLeast *kLeast_rho, int nOneAdditionalLayer, int *L_rho, int *I_rho, int *k_rho)
 
int CtPartCompareLayers (kLeast *kLeast_rho, int L_rho_fix_prev, int nOneAdditionalLayer)
 
void UpdateCompareLayers (kLeast kLeastForLayer[], int hzz)
 
int GetOneAdditionalLayer (CANON_DATA *pCD, ConTable *pzb_rho_fix)
 
void CleanNumH (NUM_H *NumH, int len)
 
int CleanCt (AT_RANK *Ct, int len)
 
void CleanIsoSortKeys (AT_ISO_SORT_KEY *isk, int len)
 
void MergeCleanIsoSortKeys (AT_ISO_SORT_KEY *isk1, AT_ISO_SORT_KEY *isk2, int len)
 
int UnorderedPartitionJoin (UnorderedPartition *p1, UnorderedPartition *p2, int n)
 
Node GetUnorderedPartitionMcrNode (UnorderedPartition *p1, Node v)
 
int nJoin2Mcrs2 (AT_RANK *nEqArray, AT_RANK n1, AT_RANK n2)
 
AT_RANK nGetMcr2 (AT_RANK *nEqArray, AT_RANK n)
 
int AllNodesAreInSet (NodeSet *cur_nodes, int lcur_nodes, NodeSet *set, int lset)
 
void NodeSetFromVertices (CANON_GLOBALS *pCG, NodeSet *cur_nodes, int l, Node *v, int num_v)
 
void CellMakeEmpty (Cell *baseW, int k)
 
Node CellGetMinNode (Partition *p, Cell *W, Node v, CANON_DATA *pCD)
 
int CellGetNumberOfNodes (Partition *p, Cell *W)
 
int CellIntersectWithSet (struct tagCANON_GLOBALS *pCG, Partition *p, Cell *W, NodeSet *Mcr, int l)
 
int PartitionColorVertex (CANON_GLOBALS *pCG, Graph *G, Partition *p, Node v, int n, int n_tg, int n_max, int bDigraph, int nNumPrevRanks)
 
void PartitionCopy (Partition *To, Partition *From, int n)
 
int PartitionSatisfiesLemma_2_25 (Partition *p, int n)
 
void PartitionGetTransposition (Partition *pFrom, Partition *pTo, int n, Transposition *gamma)
 
void PartitionGetMcrAndFixSet (CANON_GLOBALS *pCG, Partition *p, NodeSet *Mcr, NodeSet *Fix, int n, int l)
 
int PartitionGetFirstCell (Partition *p, Cell *baseW, int k, int n)
 
int PartitionIsDiscrete (Partition *p, int n)
 
void PartitionFree (Partition *p)
 
int PartitionCreate (Partition *p, int n)
 
void UnorderedPartitionMakeDiscrete (UnorderedPartition *p, int n)
 
void UnorderedPartitionFree (UnorderedPartition *p)
 
int UnorderedPartitionCreate (UnorderedPartition *p, int n)
 
void CTableFree (ConTable *Ct)
 
int CTableCreate (ConTable *Ct, int n, CANON_DATA *pCD)
 
void TranspositionFree (Transposition *p)
 
int TranspositionCreate (Transposition *p, int n)
 
void TranspositionGetMcrAndFixSetAndUnorderedPartition (struct tagCANON_GLOBALS *pCG, Transposition *gamma, NodeSet *McrSet, NodeSet *FixSet, int n, int l, UnorderedPartition *p)
 
void insertions_sort_NeighList_AT_NUMBERS2 (NEIGH_LIST base, AT_RANK *nRank, AT_RANK max_rj)
 
int WriteGraph (Graph *G, int n, int gnum, char *fname, char *fmode)
 
int SetInitialRanks2 (int num_atoms, ATOM_INVARIANT2 *pAtomInvariant2, AT_RANK *nNewRank, AT_RANK *nAtomNumber, CANON_GLOBALS *pCG)
 
void FillOutAtomInvariant2 (sp_ATOM *at, int num_atoms, int num_at_tg, ATOM_INVARIANT2 *pAtomInvariant, int bIgnoreIsotopic, int bHydrogensInRanks, int bHydrogensFixedInRanks, int bDigraph, int bTautGroupsOnly, T_GROUP_INFO *t_group_info)
 
int GetCanonRanking2 (int num_atoms, int num_at_tg, int num_max, int bDigraph, sp_ATOM *at, AT_RANK **pRankStack, int nNumPrevRanks, AT_RANK *nSymmRank, AT_RANK *nCanonRank, NEIGH_LIST *NeighList, AT_RANK *nTempRank, CANON_STAT *pCS)
 
int NodeSetCreate (struct tagCANON_GLOBALS *pCG, NodeSet *pSet, int n, int L)
 
void NodeSetFree (struct tagCANON_GLOBALS *pCG, NodeSet *pSet)
 
void NodeSetFromRadEndpoints (CANON_GLOBALS *pCG, NodeSet *cur_nodes, int k, Vertex RadEndpoints[], int num_v)
 
void RemoveFromNodeSet (CANON_GLOBALS *pCG, NodeSet *cur_nodes, int k, Vertex v[], int num_v)
 
int DoNodeSetsIntersect (NodeSet *cur_nodes, int k1, int k2)
 
int IsNodeSetEmpty (NodeSet *cur_nodes, int k)
 
void AddNodeSet2ToNodeSet1 (NodeSet *cur_nodes, int k1, int k2)
 
int AddNodesToRadEndpoints (CANON_GLOBALS *pCG, NodeSet *cur_nodes, int k, Vertex RadEndpoints[], Vertex vRad, int nStart, int nLen)
 
int SetBitCreate (CANON_GLOBALS *pCG)
 
int SetBitFree (CANON_GLOBALS *pCG)
 Frees bit string in canonicalisation data structure.
 
void DeAllocBCN (BCN *pBCN)
 
int GetBaseCanonRanking (INCHI_CLOCK *ic, int num_atoms, int num_at_tg, sp_ATOM *at[], T_GROUP_INFO *t_group_info, ATOM_SIZES s[], BCN *pBCN, struct tagInchiTime *ulTimeOutTime, CANON_GLOBALS *pCG, int bFixIsoFixedH, int LargeMolecules)
 

Variables

static AT_NUMB rank_mark_bit
 
static AT_NUMB rank_mask_bit
 

Macro Definition Documentation

◆ BASE_H_NUMBER

#define BASE_H_NUMBER   ((INCHI_CANON_INFINITY-1)/2)

◆ CanonGraph01

#define CanonGraph01   CanonGraph

◆ CanonGraph02

#define CanonGraph02   CanonGraph

◆ CanonGraph03

#define CanonGraph03   CanonGraph

◆ CanonGraph04

#define CanonGraph04   CanonGraph

◆ CanonGraph05

#define CanonGraph05   CanonGraph

◆ CanonGraph06

#define CanonGraph06   CanonGraph

◆ CanonGraph07

#define CanonGraph07   CanonGraph

◆ CanonGraph08

#define CanonGraph08   CanonGraph

◆ CanonGraph09

#define CanonGraph09   CanonGraph

◆ CanonGraph10

#define CanonGraph10   CanonGraph

◆ CanonGraph11

#define CanonGraph11   CanonGraph

◆ CanonGraph12

#define CanonGraph12   CanonGraph

◆ ELEM_NAME_LEN

#define ELEM_NAME_LEN   2

◆ EMPTY_CT

#define EMPTY_CT   0

◆ EMPTY_H_NUMBER

#define EMPTY_H_NUMBER   (INCHI_CANON_INFINITY-1)

◆ EMPTY_ISO_SORT_KEY

#define EMPTY_ISO_SORT_KEY   LONG_MAX

◆ FREE_ARRAY [1/2]

#define FREE_ARRAY (   X)    if (X) inchi_free( X);

◆ FREE_ARRAY [2/2]

#define FREE_ARRAY (   X)    if (X) inchi_free( X);

◆ FREE_CONTABLE [1/2]

#define FREE_CONTABLE (   X)    if (X) {CTableFree( X);inchi_free( X);}

◆ FREE_CONTABLE [2/2]

#define FREE_CONTABLE (   X)    if (X) {CTableFree( X);inchi_free( X);}

◆ INCHI_CANON_INFINITY

#define INCHI_CANON_INFINITY   0x7FFF

◆ INCHI_CANON_MIN

#define INCHI_CANON_MIN

◆ MAX_CELLS

#define MAX_CELLS   32766

◆ MAX_LAYERS

#define MAX_LAYERS   100

◆ MAX_NODES

#define MAX_NODES   32766

◆ MAX_SET_SIZE

#define MAX_SET_SIZE   32766 /*16384*/

◆ NORMALLY_ALLOWED_MAX_SET_SIZE

#define NORMALLY_ALLOWED_MAX_SET_SIZE   2048

◆ QZFIX_OK

#define QZFIX_OK (   X)    ((X)<=0)

◆ SEPARATE_CANON_CALLS

#define SEPARATE_CANON_CALLS   0

Typedef Documentation

◆ Cell

typedef struct tagCell Cell

◆ ConTable

typedef struct tagCTable ConTable

◆ Graph

typedef NEIGH_LIST Graph

◆ kLeast

typedef struct tagkLeast kLeast

◆ Node

typedef AT_NUMB Node

◆ NV

typedef struct tagNodeValues NV

◆ Transposition

◆ UnorderedPartition

Function Documentation

◆ AddNodeSet2ToNodeSet1()

void AddNodeSet2ToNodeSet1 ( NodeSet *  cur_nodes,
int  k1,
int  k2 
)
+ Here is the caller graph for this function:

◆ AddNodesToRadEndpoints()

int AddNodesToRadEndpoints ( CANON_GLOBALS *  pCG,
NodeSet *  cur_nodes,
int  k,
Vertex  RadEndpoints[],
Vertex  vRad,
int  nStart,
int  nLen 
)
+ Here is the caller graph for this function:

◆ AllNodesAreInSet()

int AllNodesAreInSet ( NodeSet *  cur_nodes,
int  lcur_nodes,
NodeSet *  set,
int  lset 
)
+ Here is the caller graph for this function:

◆ CanonGraph()

int CanonGraph ( struct tagINCHI_CLOCK *  ic,
CANON_GLOBALS *  pCG,
int  n,
int  n_tg,
int  n_max,
int  bDigraph,
Graph *  G,
Partition  pi[],
AT_RANK *  nSymmRank,
AT_RANK *  nCanonRank,
AT_NUMB *  nAtomNumberCanon,
CANON_DATA *  pCD,
CANON_COUNTS *  pCC,
ConTable **  pp_zb_rho_inp,
ConTable **  pp_zb_rho_out,
int  LargeMolecules 
)
+ Here is the call graph for this function:

◆ CellGetMinNode()

Node CellGetMinNode ( Partition *  p,
Cell *  W,
Node  v,
CANON_DATA *  pCD 
)
+ Here is the caller graph for this function:

◆ CellGetNumberOfNodes()

int CellGetNumberOfNodes ( Partition *  p,
Cell *  W 
)
+ Here is the caller graph for this function:

◆ CellIntersectWithSet()

int CellIntersectWithSet ( struct tagCANON_GLOBALS *  pCG,
Partition *  p,
Cell *  W,
NodeSet *  Mcr,
int  l 
)
+ Here is the caller graph for this function:

◆ CellMakeEmpty()

void CellMakeEmpty ( Cell *  baseW,
int  k 
)
+ Here is the caller graph for this function:

◆ CleanCt()

int CleanCt ( AT_RANK *  Ct,
int  len 
)
+ Here is the caller graph for this function:

◆ CleanIsoSortKeys()

void CleanIsoSortKeys ( AT_ISO_SORT_KEY *  isk,
int  len 
)
+ Here is the caller graph for this function:

◆ CleanNumH()

void CleanNumH ( NUM_H *  NumH,
int  len 
)
+ Here is the caller graph for this function:

◆ CTableCreate()

int CTableCreate ( ConTable *  Ct,
int  n,
CANON_DATA *  pCD 
)
+ Here is the caller graph for this function:

◆ CTableFree()

void CTableFree ( ConTable *  Ct)
+ Here is the caller graph for this function:

◆ CtCompareLayersGetFirstDiff()

int CtCompareLayersGetFirstDiff ( kLeast *  kLeast_rho,
int  nOneAdditionalLayer,
int *  L_rho,
int *  I_rho,
int *  k_rho 
)
+ Here is the caller graph for this function:

◆ CtFullCompare()

int CtFullCompare ( ConTable *  Ct1,
ConTable *  Ct2,
int  bOnlyCommon,
int  bSplitTautCompare 
)
+ Here is the caller graph for this function:

◆ CtFullCompareLayers()

int CtFullCompareLayers ( kLeast *  kLeastForLayer)
+ Here is the caller graph for this function:

◆ CtFullCopy()

void CtFullCopy ( ConTable *  Ct1,
ConTable *  Ct2 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CtPartClear()

void CtPartClear ( ConTable *  Ct,
int  k 
)
+ Here is the caller graph for this function:

◆ CtPartCompare()

int CtPartCompare ( ConTable *  Ct1,
ConTable *  Ct2,
S_CHAR *  cmp,
kLeast *  kLeastForLayer,
int  k,
int  bOnlyCommon,
int  bSplitTautCompare 
)
+ Here is the caller graph for this function:

◆ CtPartCompareLayers()

int CtPartCompareLayers ( kLeast *  kLeast_rho,
int  L_rho_fix_prev,
int  nOneAdditionalLayer 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CtPartCopy()

void CtPartCopy ( ConTable *  Ct1,
ConTable *  Ct2,
int  k 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CtPartFill()

void CtPartFill ( Graph *  G,
CANON_DATA *  pCD,
Partition *  p,
ConTable *  Ct,
int  k,
int  n,
int  n_tg,
int  n_max 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CtPartINCHI_CANON_INFINITY()

void CtPartINCHI_CANON_INFINITY ( ConTable *  Ct,
S_CHAR *  cmp,
int  k 
)
+ Here is the caller graph for this function:

◆ DeAllocBCN()

void DeAllocBCN ( BCN *  pBCN)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoNodeSetsIntersect()

int DoNodeSetsIntersect ( NodeSet *  cur_nodes,
int  k1,
int  k2 
)
+ Here is the caller graph for this function:

◆ FillOutAtomInvariant2()

void FillOutAtomInvariant2 ( sp_ATOM *  at,
int  num_atoms,
int  num_at_tg,
ATOM_INVARIANT2 *  pAtomInvariant,
int  bIgnoreIsotopic,
int  bHydrogensInRanks,
int  bHydrogensFixedInRanks,
int  bDigraph,
int  bTautGroupsOnly,
T_GROUP_INFO *  t_group_info 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetBaseCanonRanking()

int GetBaseCanonRanking ( INCHI_CLOCK *  ic,
int  num_atoms,
int  num_at_tg,
sp_ATOM *  at[],
T_GROUP_INFO *  t_group_info,
ATOM_SIZES  s[],
BCN *  pBCN,
struct tagInchiTime *  ulTimeOutTime,
CANON_GLOBALS *  pCG,
int  bFixIsoFixedH,
int  LargeMolecules 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetCanonRanking2()

int GetCanonRanking2 ( int  num_atoms,
int  num_at_tg,
int  num_max,
int  bDigraph,
sp_ATOM *  at,
AT_RANK **  pRankStack,
int  nNumPrevRanks,
AT_RANK *  nSymmRank,
AT_RANK *  nCanonRank,
NEIGH_LIST *  NeighList,
AT_RANK *  nTempRank,
CANON_STAT *  pCS 
)

◆ GetOneAdditionalLayer()

int GetOneAdditionalLayer ( CANON_DATA *  pCD,
ConTable *  pzb_rho_fix 
)
+ Here is the caller graph for this function:

◆ GetUnorderedPartitionMcrNode()

Node GetUnorderedPartitionMcrNode ( UnorderedPartition *  p1,
Node  v 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ insertions_sort_NeighList_AT_NUMBERS2()

void insertions_sort_NeighList_AT_NUMBERS2 ( NEIGH_LIST  base,
AT_RANK *  nRank,
AT_RANK  max_rj 
)
+ Here is the caller graph for this function:

◆ IsNodeSetEmpty()

int IsNodeSetEmpty ( NodeSet *  cur_nodes,
int  k 
)
+ Here is the caller graph for this function:

◆ MergeCleanIsoSortKeys()

void MergeCleanIsoSortKeys ( AT_ISO_SORT_KEY *  isk1,
AT_ISO_SORT_KEY *  isk2,
int  len 
)
+ Here is the caller graph for this function:

◆ nGetMcr2()

AT_RANK nGetMcr2 ( AT_RANK *  nEqArray,
AT_RANK  n 
)
+ Here is the caller graph for this function:

◆ nJoin2Mcrs2()

int nJoin2Mcrs2 ( AT_RANK *  nEqArray,
AT_RANK  n1,
AT_RANK  n2 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ NodeSetCreate()

int NodeSetCreate ( struct tagCANON_GLOBALS *  pCG,
NodeSet *  pSet,
int  n,
int  L 
)
+ Here is the caller graph for this function:

◆ NodeSetFree()

void NodeSetFree ( struct tagCANON_GLOBALS *  pCG,
NodeSet *  pSet 
)
+ Here is the caller graph for this function:

◆ NodeSetFromRadEndpoints()

void NodeSetFromRadEndpoints ( CANON_GLOBALS *  pCG,
NodeSet *  cur_nodes,
int  k,
Vertex  RadEndpoints[],
int  num_v 
)
+ Here is the caller graph for this function:

◆ NodeSetFromVertices()

void NodeSetFromVertices ( CANON_GLOBALS *  pCG,
NodeSet *  cur_nodes,
int  l,
Node *  v,
int  num_v 
)
+ Here is the caller graph for this function:

◆ PartitionColorVertex()

int PartitionColorVertex ( CANON_GLOBALS *  pCG,
Graph *  G,
Partition *  p,
Node  v,
int  n,
int  n_tg,
int  n_max,
int  bDigraph,
int  nNumPrevRanks 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PartitionCopy()

void PartitionCopy ( Partition *  To,
Partition *  From,
int  n 
)
+ Here is the caller graph for this function:

◆ PartitionCreate()

int PartitionCreate ( Partition *  p,
int  n 
)
+ Here is the caller graph for this function:

◆ PartitionFree()

void PartitionFree ( Partition *  p)
+ Here is the caller graph for this function:

◆ PartitionGetFirstCell()

int PartitionGetFirstCell ( Partition *  p,
Cell *  baseW,
int  k,
int  n 
)
+ Here is the caller graph for this function:

◆ PartitionGetMcrAndFixSet()

void PartitionGetMcrAndFixSet ( CANON_GLOBALS *  pCG,
Partition *  p,
NodeSet *  Mcr,
NodeSet *  Fix,
int  n,
int  l 
)
+ Here is the caller graph for this function:

◆ PartitionGetTransposition()

void PartitionGetTransposition ( Partition *  pFrom,
Partition *  pTo,
int  n,
Transposition *  gamma 
)
+ Here is the caller graph for this function:

◆ PartitionIsDiscrete()

int PartitionIsDiscrete ( Partition *  p,
int  n 
)
+ Here is the caller graph for this function:

◆ PartitionSatisfiesLemma_2_25()

int PartitionSatisfiesLemma_2_25 ( Partition *  p,
int  n 
)
+ Here is the caller graph for this function:

◆ RemoveFromNodeSet()

void RemoveFromNodeSet ( CANON_GLOBALS *  pCG,
NodeSet *  cur_nodes,
int  k,
Vertex  v[],
int  num_v 
)
+ Here is the caller graph for this function:

◆ SetBitCreate()

int SetBitCreate ( CANON_GLOBALS *  pCG)
+ Here is the caller graph for this function:

◆ SetBitFree()

int SetBitFree ( struct tagCANON_GLOBALS *  pCG)

Frees bit string in canonicalisation data structure.

Parameters
pCGCanonicalisation data structure
Returns
int 1 if success, 0 if failed
+ Here is the caller graph for this function:

◆ SetInitialRanks2()

int SetInitialRanks2 ( int  num_atoms,
ATOM_INVARIANT2 *  pAtomInvariant2,
AT_RANK *  nNewRank,
AT_RANK *  nAtomNumber,
CANON_GLOBALS *  pCG 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TranspositionCreate()

int TranspositionCreate ( Transposition *  p,
int  n 
)
+ Here is the caller graph for this function:

◆ TranspositionFree()

void TranspositionFree ( Transposition *  p)
+ Here is the caller graph for this function:

◆ TranspositionGetMcrAndFixSetAndUnorderedPartition()

void TranspositionGetMcrAndFixSetAndUnorderedPartition ( struct tagCANON_GLOBALS *  pCG,
Transposition *  gamma,
NodeSet *  McrSet,
NodeSet *  FixSet,
int  n,
int  l,
UnorderedPartition *  p 
)
+ Here is the caller graph for this function:

◆ UnorderedPartitionCreate()

int UnorderedPartitionCreate ( UnorderedPartition *  p,
int  n 
)
+ Here is the caller graph for this function:

◆ UnorderedPartitionFree()

void UnorderedPartitionFree ( UnorderedPartition *  p)
+ Here is the caller graph for this function:

◆ UnorderedPartitionJoin()

int UnorderedPartitionJoin ( UnorderedPartition *  p1,
UnorderedPartition *  p2,
int  n 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UnorderedPartitionMakeDiscrete()

void UnorderedPartitionMakeDiscrete ( UnorderedPartition *  p,
int  n 
)
+ Here is the caller graph for this function:

◆ UpdateCompareLayers()

void UpdateCompareLayers ( kLeast  kLeastForLayer[],
int  hzz 
)
+ Here is the caller graph for this function:

◆ WriteGraph()

int WriteGraph ( Graph *  G,
int  n,
int  gnum,
char *  fname,
char *  fmode 
)

Variable Documentation

◆ rank_mark_bit

AT_NUMB rank_mark_bit
static

◆ rank_mask_bit

AT_NUMB rank_mask_bit
static