23 #define HAVE_UNISTD_H 1 24 #define HAVE_SYSTYPES_H 1 25 #define HAVE_STDDEF_H 1 26 #define HAVE_STDLIB_H 1 27 #define HAVE_STRING_H 1 30 #define HAS_MATH_INF 0 36 #define SIZEOF_LONG_LONG 8 38 #include <nauty_sizes.h> 60 #if defined(__cray) || defined(__cray__) || defined(cray) 64 #if defined(__unix) || defined(__unix__) || defined(unix) 290 #define NAUTYVERSIONID 2201 291 #define NAUTYREQUIRED 2201 293 #define NAUTYVERSIONID 2200 294 #define NAUTYREQUIRED 2200 297 #ifndef NAUTY_IN_MAGMA 299 #include <sys/types.h> 329 #ifdef NAUTY_IN_MAGMA 331 #define WORDSIZE WORDBITS 336 #if (WORDSIZE != 16) && (WORDSIZE != 32) && (WORDSIZE != 64) 337 #error "WORDSIZE must be 16, 32 or 64" 350 #if defined(BIGNAUTY) && (WORDSIZE==16) 351 #error "BIGNAUTY requires WORDSIZE 32 or 64" 354 #ifdef NAUTY_IN_MAGMA 355 typedef t_uint setword;
361 typedef unsigned short setword;
362 #define SETWORD_SHORT 367 typedef unsigned int setword;
370 typedef unsigned long setword;
377 typedef unsigned int setword;
381 typedef unsigned long setword;
384 typedef unsigned long long setword;
385 #define SETWORD_LONGLONG 393 #define NAUTYVERSION "2.2 (16 bits)" 396 #define NAUTYVERSION "2.2 (32 bits)" 399 #define NAUTYVERSION "2.2 (64 bits)" 406 #define MAXM ((MAXN+WORDSIZE-1)/WORDSIZE) 417 #define SETWD(pos) ((pos)>>4) 418 #define SETBT(pos) ((pos)&0xF) 419 #define TIMESWORDSIZE(w) ((w)<<4) 423 #define SETWD(pos) ((pos)>>5) 424 #define SETBT(pos) ((pos)&0x1F) 425 #define TIMESWORDSIZE(w) ((w)<<5) 429 #define SETWD(pos) ((pos)>>6) 430 #define SETBT(pos) ((pos)&0x3F) 431 #define TIMESWORDSIZE(w) ((w)<<6) 434 #ifdef NAUTY_IN_MAGMA 440 #define ADDELEMENT1(setadd,pos) (*(setadd) |= BITT[pos]) 441 #define DELELEMENT1(setadd,pos) (*(setadd) &= ~BITT[pos]) 442 #define FLIPELEMENT1(setadd,pos) (*(setadd) ^= BITT[pos]) 443 #define ISELEMENT1(setadd,pos) ((*(setadd) & BITT[pos]) != 0) 444 #define EMPTYSET1(setadd,m) *(setadd) = 0; 445 #define GRAPHROW1(g,v,m) ((set*)(g) + (v)) 447 #define ADDELEMENT0(setadd,pos) ((setadd)[SETWD(pos)] |= BITT[SETBT(pos)]) 448 #define DELELEMENT0(setadd,pos) ((setadd)[SETWD(pos)] &= ~BITT[SETBT(pos)]) 449 #define FLIPELEMENT0(setadd,pos) ((setadd)[SETWD(pos)] ^= BITT[SETBT(pos)]) 450 #define ISELEMENT0(setadd,pos) (((setadd)[SETWD(pos)] & BITT[SETBT(pos)]) != 0) 451 #define EMPTYSET0(setadd,m) \ 453 for (es = (setword*)(setadd)+(m); --es >= (setword*)(setadd);) *es=0;} 454 #define GRAPHROW0(g,v,m) ((set*)(g) + (long)(v)*(long)(m)) 456 #if (MAXM==1) && defined(ONE_WORD_SETS) 457 #define ADDELEMENT ADDELEMENT1 458 #define DELELEMENT DELELEMENT1 459 #define FLIPELEMENT FLIPELEMENT1 460 #define ISELEMENT ISELEMENT1 461 #define EMPTYSET EMPTYSET1 462 #define GRAPHROW GRAPHROW1 464 #define ADDELEMENT ADDELEMENT0 465 #define DELELEMENT DELELEMENT0 466 #define FLIPELEMENT FLIPELEMENT0 467 #define ISELEMENT ISELEMENT0 468 #define EMPTYSET EMPTYSET0 469 #define GRAPHROW GRAPHROW0 472 #ifdef NAUTY_IN_MAGMA 474 #define EMPTYSET(setadd,m) {t_int _i; bsp_makeempty(setadd,m,_i);} 477 #define NOTSUBSET(word1,word2) ((word1) & ~(word2)) 479 #define INTERSECT(word1,word2) ((word1) &= (word2)) 480 #define UNION(word1,word2) ((word1) |= (word2)) 481 #define SETDIFF(word1,word2) ((word1) &= ~(word2)) 482 #define XOR(word1,word2) ((word1) ^= (word2)) 483 #define ZAPBIT(word,x) ((word) &= ~BITT[x]) 484 #define TAKEBIT(iw,w) {iw = FIRSTBIT(w); w ^= BITT[iw];} 486 #ifdef SETWORD_LONGLONG 487 #define MSK3232 0xFFFFFFFF00000000ULL 488 #define MSK1648 0xFFFF000000000000ULL 489 #define MSK0856 0xFF00000000000000ULL 490 #define MSK1632 0x0000FFFF00000000ULL 491 #define MSK0840 0xFF0000000000ULL 492 #define MSK1616 0xFFFF0000ULL 493 #define MSK0824 0xFF000000ULL 494 #define MSK0808 0xFF00ULL 495 #define MSK63C 0x7FFFFFFFFFFFFFFFULL 496 #define MSK31C 0x7FFFFFFFULL 497 #define MSK15C 0x7FFFULL 498 #define MSK64 0xFFFFFFFFFFFFFFFFULL 499 #define MSK32 0xFFFFFFFFULL 500 #define MSK16 0xFFFFULL 504 #define MSK3232 0xFFFFFFFF00000000UL 505 #define MSK1648 0xFFFF000000000000UL 506 #define MSK0856 0xFF00000000000000UL 507 #define MSK1632 0x0000FFFF00000000UL 508 #define MSK0840 0xFF0000000000UL 509 #define MSK1616 0xFFFF0000UL 510 #define MSK0824 0xFF000000UL 511 #define MSK0808 0xFF00UL 512 #define MSK63C 0x7FFFFFFFFFFFFFFFUL 513 #define MSK31C 0x7FFFFFFFUL 514 #define MSK15C 0x7FFFUL 515 #define MSK64 0xFFFFFFFFFFFFFFFFUL 516 #define MSK32 0xFFFFFFFFUL 517 #define MSK16 0xFFFFUL 520 #if defined(SETWORD_INT) || defined(SETWORD_SHORT) 521 #define MSK3232 0xFFFFFFFF00000000U 522 #define MSK1648 0xFFFF000000000000U 523 #define MSK0856 0xFF00000000000000U 524 #define MSK1632 0x0000FFFF00000000U 525 #define MSK0840 0xFF0000000000U 526 #define MSK1616 0xFFFF0000U 527 #define MSK0824 0xFF000000U 528 #define MSK0808 0xFF00U 529 #define MSK63C 0x7FFFFFFFFFFFFFFFU 530 #define MSK31C 0x7FFFFFFFU 531 #define MSK15C 0x7FFFU 532 #define MSK64 0xFFFFFFFFFFFFFFFFU 533 #define MSK32 0xFFFFFFFFU 534 #define MSK16 0xFFFFU 537 #if defined(SETWORD_LONGLONG) 539 #define SETWORD_FORMAT "%04llx" 542 #define SETWORD_FORMAT "%08llx" 545 #define SETWORD_FORMAT "%16llx" 549 #if defined(SETWORD_LONG) 551 #define SETWORD_FORMAT "%04lx" 554 #define SETWORD_FORMAT "%08lx" 557 #define SETWORD_FORMAT "%16lx" 561 #if defined(SETWORD_INT) 563 #define SETWORD_FORMAT "%04x" 566 #define SETWORD_FORMAT "%08x" 569 #define SETWORD_FORMAT "%16x" 573 #if defined(SETWORD_SHORT) 575 #define SETWORD_FORMAT "%04hx" 578 #define SETWORD_FORMAT "%08hx" 581 #define SETWORD_FORMAT "%16hx" 592 #define POPCOUNT(x) (bytecount[(x)>>56 & 0xFF] + bytecount[(x)>>48 & 0xFF] \ 593 + bytecount[(x)>>40 & 0xFF] + bytecount[(x)>>32 & 0xFF] \ 594 + bytecount[(x)>>24 & 0xFF] + bytecount[(x)>>16 & 0xFF] \ 595 + bytecount[(x)>>8 & 0xFF] + bytecount[(x) & 0xFF]) 596 #define FIRSTBIT(x) ((x) & MSK3232 ? \ 599 0+leftbit[((x)>>56) & 0xFF] : \ 602 16+leftbit[(x)>>40] : \ 603 24+leftbit[(x)>>32] \ 606 32+leftbit[(x)>>24] : \ 607 40+leftbit[(x)>>16] \ 609 48+leftbit[(x)>>8] : \ 611 #define BITMASK(x) (MSK63C >> (x)) 612 #define ALLBITS MSK64 613 #define SWCHUNK0(w) ((long)((w)>>48)&0xFFFFL) 614 #define SWCHUNK1(w) ((long)((w)>>32)&0xFFFFL) 615 #define SWCHUNK2(w) ((long)((w)>>16)&0xFFFFL) 616 #define SWCHUNK3(w) ((long)(w)&0xFFFFL) 620 #define POPCOUNT(x) (bytecount[(x)>>24 & 0xFF] + bytecount[(x)>>16 & 0xFF] \ 621 + bytecount[(x)>>8 & 0xFF] + bytecount[(x) & 0xFF]) 622 #define FIRSTBIT(x) ((x) & MSK1616 ? ((x) & MSK0824 ? \ 623 leftbit[((x)>>24) & 0xFF] : 8+leftbit[(x)>>16]) \ 624 : ((x) & MSK0808 ? 16+leftbit[(x)>>8] : 24+leftbit[x])) 625 #define BITMASK(x) (MSK31C >> (x)) 626 #define ALLBITS MSK32 627 #define SWCHUNK0(w) ((long)((w)>>16)&0xFFFFL) 628 #define SWCHUNK1(w) ((long)(w)&0xFFFFL) 632 #define POPCOUNT(x) (bytecount[(x)>>8 & 0xFF] + bytecount[(x) & 0xFF]) 633 #define FIRSTBIT(x) ((x) & MSK0808 ? leftbit[((x)>>8) & 0xFF] : 8+leftbit[x]) 634 #define BITMASK(x) (MSK15C >> (x)) 635 #define ALLBITS MSK16 636 #define SWCHUNK0(w) ((long)(w)&0xFFFFL) 643 #define POPCOUNT(x) _popcnt(x) 644 #define FIRSTBIT(x) _leadz(x) 645 #define BITMASK(x) _mask(65+(x)) 648 #ifdef NAUTY_IN_MAGMA 652 #define POPCOUNT(x) bs_popcount(x) 653 #define FIRSTBIT(x) bs_firstbit(x) 654 #define BITMASK(x) bs_bitmask(x) 657 #define ALLMASK(n) ((n)?~BITMASK((n)-1):(setword)0) 666 #define NAUTY_INFINITY 0xFFFFFFF 667 typedef int shortish;
669 #define NAUTY_INFINITY 0x7FFF 670 typedef short shortish;
674 #if !HAS_MATH_INF && !defined(INFINITY) 675 #define INFINITY NAUTY_INFINITY 678 #if MAXN > NAUTY_INFINITY-3 679 #error MAXN must be at most NAUTY_INFINITY-3 688 typedef setword
set,graph;
689 typedef int nvector,np2vector;
690 typedef shortish permutation;
691 #ifdef NAUTY_IN_MAGMA 692 typedef graph nauty_graph;
693 typedef set nauty_set;
700 #define groupsize1 grpsize1 701 #define groupsize2 grpsize2 705 #define outofspace errstatus; 722 #define MULTIPLY(s1,s2,i) if ((s1 *= i) >= 1e10) {s1 /= 1e10; s2 += 10;} 727 (graph*,permutation*,boolean,int,int);
729 (graph*,graph*,
int*,
int*,int,int);
731 (graph*,graph*,permutation*,int,int,int);
733 (graph*,
int*,
int*,int,
int*,permutation*,
set*,
int*,int,int);
735 (graph*,
int*,
int*,int,
int*,permutation*,
set*,
int*,int,int);
736 boolean (*cheapautom)
737 (
int*,int,boolean,int);
739 (graph*,
int*,
int*,int,int,int,int);
740 void (*freedyn)(void);
753 boolean writemarkers;
759 (graph*,
int*,
int*,int,
int*,permutation*,
set*,
int*,int,int);
760 void (*userautomproc)
761 (int,permutation*,
int*,int,int,int);
762 void (*userlevelproc)
763 (
int*,
int*,int,
int*,
statsblk*,int,int,int,int,int,int);
765 (graph*,
int*,
int*,int,int,int,int,int,int);
766 void (*usertcellproc)
767 (graph*,
int*,
int*,int,int,
set*,
int*,
int*,int,int,
768 int(*)(graph*,
int*,
int*,int,int,int,int),
int,
int);
770 (graph*,
int*,
int*,int,int,int,permutation*,int,boolean,int,int);
776 #ifdef NAUTY_IN_MAGMA 786 #define CONSOLWIDTH 78 790 #define NILFUNCTION ((void(*)())NULL) 791 #define NILSET ((set*)NULL) 792 #define NILGRAPH ((graph*)NULL) 794 #define DEFAULTOPTIONS_GRAPH(options) optionblk options = \ 795 {0,FALSE,FALSE,FALSE,TRUE,FALSE,CONSOLWIDTH, \ 796 NULL,NULL,NULL,NULL,NULL,NULL,NULL,100,0,1,0,&dispatch_graph} 798 #ifndef DEFAULTOPTIONS 799 #define DEFAULTOPTIONS DEFAULTOPTIONS_GRAPH 802 #ifdef NAUTY_IN_MAGMA 803 #define PUTC(c,f) io_putchar(c) 806 extern void javastream(FILE* f,
char c);
807 #define PUTC(c,f) javastream(f,c) 809 #define PUTC(c,f) putc(c,f) 816 #ifndef NAUTY_IN_MAGMA 821 extern void *malloc(
size_t);
822 extern void *realloc(
void*,
size_t);
823 extern void free(
void*);
835 #ifdef NAUTY_IN_MAGMA 836 #define ALLOCS(x,y) mem_malloc((size_t)(x)*(size_t)(y)) 837 #define REALLOCS(p,x) mem_realloc(p,(size_t)(x)) 838 #define FREES(p) mem_free(p) 840 #define ALLOCS(x,y) malloc((size_t)(x)*(size_t)(y)) 841 #define REALLOCS(p,x) realloc(p,(size_t)(x)) 842 #define FREES(p) free(p) 870 #define DYNALLSTAT(type,name,name_sz) \ 871 static type *name; static size_t name_sz=0 872 #define DYNALLOC1(type,name,name_sz,sz,msg) \ 873 if ((size_t)(sz) > name_sz) \ 874 { if (name_sz) FREES(name); name_sz = (sz); \ 875 if ((name=(type*)ALLOCS(sz,sizeof(type))) == NULL) {alloc_error(msg);}} 876 #define DYNALLOC2(type,name,name_sz,sz1,sz2,msg) \ 877 if ((size_t)(sz1)*(size_t)(sz2) > name_sz) \ 878 { if (name_sz) FREES(name); name_sz = (size_t)(sz1)*(size_t)(sz2); \ 879 if ((name=(type*)ALLOCS((sz1),(sz2)*sizeof(type))) == NULL) \ 881 #define DYNREALLOC(type,name,name_sz,sz,msg) \ 882 {if ((size_t)(sz) > name_sz) \ 883 { if ((name = (type*)REALLOCS(name,(sz)*sizeof(type))) == NULL) \ 884 {alloc_error(msg);} else name_sz = (sz);}} 885 #define DYNFREE(name,name_sz) if (name_sz) {FREES(name); name_sz = 0;} 886 #define CONDYNFREE(name,name_sz,minsz) \ 887 if (name_sz > (size_t)(minsz)) {FREES(name); name_sz = 0;} 890 #define ERRFILE stderr 895 #define EXTDEF_TYPE 1 897 #define EXTDEF_TYPE 2 900 #define EXTDEF_CLASS static 901 #define EXTDEF_TYPE 2 906 #ifndef NAUTY_IN_MAGMA 910 extern setword bit[];
911 extern int bytecount[];
912 extern int leftbit[];
917 #ifdef SETWORD_LONGLONG 919 setword bit[] = {01000000000000000000000LL,0400000000000000000000LL,
920 0200000000000000000000LL,0100000000000000000000LL,
921 040000000000000000000LL,020000000000000000000LL,
922 010000000000000000000LL,04000000000000000000LL,
923 02000000000000000000LL,01000000000000000000LL,
924 0400000000000000000LL,0200000000000000000LL,
925 0100000000000000000LL,040000000000000000LL,
926 020000000000000000LL,010000000000000000LL,
927 04000000000000000LL,02000000000000000LL,
928 01000000000000000LL,0400000000000000LL,0200000000000000LL,
929 0100000000000000LL,040000000000000LL,020000000000000LL,
930 010000000000000LL,04000000000000LL,02000000000000LL,
931 01000000000000LL,0400000000000LL,0200000000000LL,
932 0100000000000LL,040000000000LL,020000000000LL,010000000000LL,
933 04000000000LL,02000000000LL,01000000000LL,0400000000LL,
934 0200000000LL,0100000000LL,040000000LL,020000000LL,
935 010000000LL,04000000LL,02000000LL,01000000LL,0400000LL,
936 0200000LL,0100000LL,040000LL,020000LL,010000LL,04000LL,
937 02000LL,01000LL,0400LL,0200LL,0100LL,040LL,020LL,010LL,
942 setword bit[] = {01000000000000000000000,0400000000000000000000,
943 0200000000000000000000,0100000000000000000000,
944 040000000000000000000,020000000000000000000,
945 010000000000000000000,04000000000000000000,
946 02000000000000000000,01000000000000000000,
947 0400000000000000000,0200000000000000000,
948 0100000000000000000,040000000000000000,020000000000000000,
949 010000000000000000,04000000000000000,02000000000000000,
950 01000000000000000,0400000000000000,0200000000000000,
951 0100000000000000,040000000000000,020000000000000,
952 010000000000000,04000000000000,02000000000000,
953 01000000000000,0400000000000,0200000000000,0100000000000,
954 040000000000,020000000000,010000000000,04000000000,
955 02000000000,01000000000,0400000000,0200000000,0100000000,
956 040000000,020000000,010000000,04000000,02000000,01000000,
957 0400000,0200000,0100000,040000,020000,010000,04000,
958 02000,01000,0400,0200,0100,040,020,010,04,02,01};
965 setword bit[] = {020000000000,010000000000,04000000000,02000000000,
966 01000000000,0400000000,0200000000,0100000000,040000000,
967 020000000,010000000,04000000,02000000,01000000,0400000,
968 0200000,0100000,040000,020000,010000,04000,02000,01000,
969 0400,0200,0100,040,020,010,04,02,01};
974 setword bit[] = {0100000,040000,020000,010000,04000,02000,01000,0400,0200,
975 0100,040,020,010,04,02,01};
980 int bytecount[] = {0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,
981 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
982 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
983 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
984 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
985 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
986 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
987 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
988 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
989 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
990 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
991 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
992 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
993 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
994 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
995 4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8};
999 int leftbit[] = {8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,
1000 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
1001 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
1002 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
1003 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1004 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1005 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1006 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1007 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1008 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1009 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1010 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1011 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1012 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1013 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1014 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
1020 #define EXTPROC(func,args) extern func args; 1029 extern void alloc_error(
char*);
1030 extern int bestcell(graph*,
int*,
int*,
int,
int,
int,
int);
1031 extern void breakout(
int*,
int*,
int,
int,
int,
set*,
int);
1032 extern boolean cheapautom(
int*,
int,
boolean,
int);
1033 extern void doref(graph*,
int*,
int*,
int,
int*,
int*,permutation*,
set*,
int*,
1034 void(*)(graph*,
int*,
int*,
int,
int*,permutation*,
set*,
int*,
int,
int),
1035 void(*)(graph*,
int*,
int*,
int,
int,
int,permutation*,
int,
boolean,
int,
int),
1036 int,
int,
int,
boolean,
int,
int);
1037 extern boolean isautom(graph*,permutation*,
boolean,
int,
int);
1039 extern int itos(
int,
char*);
1040 extern void fmperm(permutation*,
set*,
set*,
int,
int);
1041 extern void fmptn(
int*,
int*,
int,
set*,
set*,
int,
int);
1042 extern void longprune(
set*,
set*,
set*,
set*,
int);
1043 extern void nauty(graph*,
int*,
int*,
set*,
int*,
optionblk*,
1044 statsblk*,
set*,
int,
int,
int,graph*);
1045 extern int nextelement(
set*,
int,
int);
1046 extern int orbjoin(
int*,permutation*,
int);
1047 extern void permset(
set*,
set*,
int,permutation*);
1048 extern void putstring(FILE*,
char*);
1049 extern void refine(graph*,
int*,
int*,
int,
int*,permutation*,
set*,
int*,
int,
int);
1050 extern void refine1(graph*,
int*,
int*,
int,
int*,permutation*,
set*,
int*,
int,
int);
1051 extern void shortprune(
set*,
set*,
int);
1052 extern void targetcell(graph*,
int*,
int*,
int,
int,
set*,
int*,
1053 int*,
int,
int,
int(*)(graph*,
int*,
int*,
int,
int,
int,
int),
int,
int);
1054 extern int testcanlab(graph*,graph*,
int*,
int*,
int,
int);
1055 extern void updatecan(graph*,graph*,permutation*,
int,
int,
int);
1056 extern void writeperm(FILE*,permutation*,
boolean,
int,
int);
1057 extern void nauty_freedyn(
void);
1058 extern void nauty_check(
int,
int,
int,
int);
1059 extern void naugraph_check(
int,
int,
int,
int);
1060 extern void nautil_check(
int,
int,
int,
int);
1061 extern void nautil_freedyn(
void);
1062 extern void naugraph_freedyn(
void);