Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / mimlib / rehash.mud
1 <PACKAGE "REHASH">
2
3 <ENTRY REHASH NEXT-PRIME>
4
5 <DEFINE REHASH (SIZ:FIX "AUX" (NT:VECTOR <IVECTOR .SIZ ()>)
6              (OT:VECTOR ,ATOM-TABLE))
7    <MAPF <>
8      <FUNCTION (L:LIST)
9         <REPEAT (LL:LIST H:FIX)
10            <COND (<EMPTY? .L> <RETURN>)>
11            <SET LL <REST .L>>
12            <PUTREST .L ()>
13            <SET H <HASH-NAME <SPNAME <CHTYPE <1 .L> ATOM>> .SIZ>>
14            <PUT .NT .H <PUTREST .L <NTH .NT .H>>>
15            <SET L .LL>>>
16      .OT>
17    <SETG M$$OBLSIZ!-INTERNAL .SIZ>
18    <SETG M$$OBLIST!-INTERNAL <SETG ATOM-TABLE .NT>>
19    <CALL SETS OBLIST ,ATOM-TABLE>
20    .SIZ>
21
22 <DEFINE NPRIME? (N) #DECL ((N) FIX)
23         <REPEAT ((D 2) (SQ <FIX <+ <SQRT <FLOAT .N>> 1.0>>))
24                 <COND (<G? .D .SQ> <RETURN <>>)>
25                 <COND (<==? <MOD .N .D> 0> <RETURN .D>)>
26                 <SET D <+ .D 1>>>>
27
28 <DEFINE NEXT-PRIME (X) #DECL ((X) FIX)
29         <REPEAT () <COND (<NOT <NPRIME? <SET X <+ .X 1>>>> <RETURN .X>)>>>
30
31 <ENDPACKAGE>