📄 cmp.c
字号:
/* Implementation of 2*N-bit Comperator */#include "defs.h"#include "ind.h"#include "stdnet.h"/* Parameter Handling */#define DEFNIN 3#define DEFNHID AUTO#define MAXIN 8#define MAXHID 255char *StdOptStr() {return "N:M:\0";}char *StdUsage() {return "Network (2xN Comperator) Parameters:\n" "-N <no. of input units>: 3\n" "-M <no. of hidden units>: auto (M)\n" "-Q <train for = instead of =< ?> 0\n\0";}int Nin=DEFNIN;int Nhid=DEFNHID;int Equality=0;const int grey2dec[16]={0,1,3,2,7,6,4,5,15,14,12,13,8,9,11,10}; const char EqualityStr[2][40]={"less or equal","equal"};const int stdNhid[17]={0,0,2,0,2,0,3,0,3,0,3,0,4,0,4,0,4};int handleStdOpt(char opt,char* arg){ switch(opt) { case 'N': return (Nin =getint(arg,1,MAXIN))<0; case 'M': return (Nhid =getint(arg,1,MAXHID))<0; case 'Q': return (Equality =getint(arg,0,1))<0; }; return 1;}int initStd(){ Nin*=2; if(Nhid==AUTO) Nhid=stdNhid[Nin]; Nout=1; Ntrain=1<<Nin; sprintf(StdName,"2x%d bit Comperator (%s)", Nin/2,EqualityStr[Equality]); return 0;}void initTrain(){ int p,i; unsigned l,a,b,m; l=Nin/2; m=(1<<l)-1; for(p=0;p<Ntrain;p++) { a=p&m; b=(p>>l)&m; for(i=0;i<Nin;i++) TrainIn[p][i]=(float) ((p>>i) & 1); TrainOut[p][0]=(float)( Equality ? (a==b) : (a<=b) ); };}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -