clu: 'macro 'int cktsize,feedthru,groupout 'int i,j,k 'str tail,lasttail 'list ops 'str oc 'label: circuit 'disp "\r\n" comment input format CARRY IN, comment GENERATE 1, GENERATE 2,..., comment PROPAGATE 1, PROPAGATE 2, ... , 'eval cktsize<-'0,feedthru<-'2!=0,groupout<-'1!=0 'if 'cktsize'==0 'assign cktsize,3 'assign feedthru,0 'assign groupout,1 'endif 'disp "\tinputs\tg0" 'for i<-1,'i'<='cktsize+'groupout,i<-'i+1 'disp ",g"#'i 'endfor 'for i<-1,'i'<='cktsize+'groupout,i<-'i+1 'disp ",p"#'i 'endfor 'disp "\r\n" 'disp "\toutputs\t" 'if 'feedthru 'disp "c0," 'endif 'disp "c1" 'for i<-2,'i'<='cktsize,i<-'i+1 'disp ",c"#'i 'endfor 'if 'groupout 'disp ",gg,gp" 'endif 'disp "\r\n\r\n" 'if 'feedthru hlcv g0,c0 'endif comment compute the carrys 'for (i<-1,lasttail<-"1",tail<-"21"), 'i'<='cktsize, (i<-'i+1,lasttail<-'tail,tail<-'i+1#'tail) 'oc<-"aoi"#'tail 'ops<-'null 'for j<-1,'j'<='i,j<-'j+1 'ops<-'consr("g"#'j-1,'ops) 'for k<-'j,'k'<='i,k<-'k+1 'ops<-'consr("p"#'k,'ops) 'endfor 'endfor 'ops<-'consr("g"#'i,'ops) 'oc 'ops,("c"#'i) 'endfor 'if 'groupout 'oc<-"and" 'ops<-"p1" 'for i<-2,'i'<='cktsize+1,i<-'i+1 'ops<-'consr("p"#'i,'ops) 'endfor 'oc 'ops,(gp) 'oc<-"aoi"#'lasttail 'ops<-'null 'for i<-1,'i'<='cktsize,i<-'i+1 'ops<-'consr("g"#'i,'ops) 'for j<-'i,'j'<='cktsize,j<-'j+1 'ops<-'consr("p"#'j+1,'ops) 'endfor 'endfor 'ops<-'consr("g"#'cktsize+1,'ops) 'oc 'ops,(gg) 'endif endcircuit 'endmacro