DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦589911ad5⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Random, seg_0597f9

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



package Random is
   type Int_Range is range

      Long_Integer'Min (Long_Integer (Integer'First), (-2 ** 31) + 1) ..

      Long_Integer'Max (Long_Integer (Integer'Last),  (+2 ** 31) - 1);
 



   --type Int is new Integer'Base;
   subtype Nat is Int range 0 .. Int'Last;
   --  The types that we will actually use                

   --  The following declarations define the type State, which is used as the
   --  underlying type for both Generator and State in the user level packages

   Larger_Lag  : constant := 25;
   Smaller_Lag : constant := 11;
   --  Lag values used for modular accessing of the state vector

   type Lag_Range is mod Larger_Lag;
   --  Range of larger lag is length of state vector

   type State_Vector is array (Lag_Range) of Float;

   type State is record
      Lagged_Outputs : State_Vector;
      Borrow         : Float;
      R, S           : Lag_Range;
   end record;

   subtype Uniformly_Distributed is Float range 0.0 .. 1.0;
   --  Range of random numbers

   procedure Random (S : in out State; U : out Uniformly_Distributed);
   --  Obtain next random number, updating State

   function Make_State (Starter : Int := 3E+7) return State;
   --  Build a state from the given integer value. The default value for
   --  Int is used to build the default starting generator configurations.

   procedure Reset (S : out State; Initiator : in Integer);
   --  Set state from given integer value

   procedure Reset (S : out State);
 --  Set state from current time

   Max_Image_Width : constant := (24 + 1) * 25 + 24;
   --  The 24 + 1 is for one floating point value plus a comma, and there
   --  are up to Larger_Lag number of these, followed by one additional value

   function Image (S : State)  return String;
   --  Convert state to canonical string format (see body for format)

   function Value (S : String) return State;
   --  Convert string returned by previous image call back to State

end Random;

E3 Meta Data

    nblk1=4
    nid=4
    hdr6=6
        [0x00] rec0=22 rec1=00 rec2=01 rec3=052
        [0x01] rec0=18 rec1=00 rec2=03 rec3=05c
        [0x02] rec0=04 rec1=00 rec2=02 rec3=000
        [0x03] rec0=06 rec1=81 rec2=8e rec3=442
    tail 0x2176819ae890c5cad6716 0x42a00088462060003
Free Block Chain:
  0x4: 0000  00 00 00 04 80 01 72 01 02 65 20 30 2e 30 20 2e  ┆      r  e 0.0 .┆