define(`C',`dnl')dnl a short comment C C ( miscelleanous M4 macros ) C C----------------------------------------------------------------------- C *** Note *** C define(`Note',`ifelse')dnl a long comment C C----------------------------------------------------------------------- C C *** for loop *** C C usage: for(var,start,end,procedure) C break # breaks out of loop C define(for,`undefine(`_break')define(`$1',`$2')_for(`$1',`$2',`$3',`$4')')dnl C define(_for,`$4`'ifelse($1,`$3',,`ifdef(`_break',,`define(`$1',incr($1))_for(`$1',`$2',`$3',`$4')')')')dnl C define(`break',`define(`_break')')dnl C C C----------------------------------------------------------------------- C *** prime number finder *** C C usage: nextprime(number) C C expands to: next prime number >= input number C C C define(nextprime,`undefine(`_done') C for(`j',2,$1, C `define(`t',eval($1%j)) C ifelse(t,0,`break()') C define(`s',eval($1-j*j)) C ifelse(substr(s,0,1),`-', C `define(`_done',`d')break')') C ifdef(`_done',$1, C `nextprime(incr($1))')')dnl C C define(nextprime,`undefine(`_done')for(`j',2,$1,`define(`t',eval($1%j))ifelse(t,0,`break()')define(`s',eval($1-j*j))ifelse(substr(s,0,1),`-',`define(`_done',`d')break')')ifdef(`_done',$1,`nextprime(incr($1))')')dnl C