Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / mimlib / rehash.mud
diff --git a/mim/development/mim/vax/mimlib/rehash.mud b/mim/development/mim/vax/mimlib/rehash.mud
new file mode 100644 (file)
index 0000000..174248f
--- /dev/null
@@ -0,0 +1,31 @@
+<PACKAGE "REHASH">
+
+<ENTRY REHASH NEXT-PRIME>
+
+<DEFINE REHASH (SIZ:FIX "AUX" (NT:VECTOR <IVECTOR .SIZ ()>)
+            (OT:VECTOR ,ATOM-TABLE))
+   <MAPF <>
+     <FUNCTION (L:LIST)
+       <REPEAT (LL:LIST H:FIX)
+          <COND (<EMPTY? .L> <RETURN>)>
+          <SET LL <REST .L>>
+          <PUTREST .L ()>
+          <SET H <HASH-NAME <SPNAME <CHTYPE <1 .L> ATOM>> .SIZ>>
+          <PUT .NT .H <PUTREST .L <NTH .NT .H>>>
+          <SET L .LL>>>
+     .OT>
+   <SETG M$$OBLSIZ!-INTERNAL .SIZ>
+   <SETG M$$OBLIST!-INTERNAL <SETG ATOM-TABLE .NT>>
+   <CALL SETS OBLIST ,ATOM-TABLE>
+   .SIZ>
+
+<DEFINE NPRIME? (N) #DECL ((N) FIX)
+       <REPEAT ((D 2) (SQ <FIX <+ <SQRT <FLOAT .N>> 1.0>>))
+               <COND (<G? .D .SQ> <RETURN <>>)>
+               <COND (<==? <MOD .N .D> 0> <RETURN .D>)>
+               <SET D <+ .D 1>>>>
+
+<DEFINE NEXT-PRIME (X) #DECL ((X) FIX)
+       <REPEAT () <COND (<NOT <NPRIME? <SET X <+ .X 1>>>> <RETURN .X>)>>>
+
+<ENDPACKAGE>