1. with Ada.Numerics.Generic_Complex_Types; use Ada.Numerics; 
  2. with Modulo_Discrete_Type; 
  3. with System.Multiprocessors;             use System.Multiprocessors; 
  4.  
  5. package Specs is 
  6.  
  7.    Utilized_Cores : constant CPU_Range := Number_Of_CPUs; 
  8.    subtype Core_Range is CPU_Range range 1 .. Utilized_Cores; 
  9.  
  10.    package Modulo_Core_Range is new Modulo_Discrete_Type (Core_Range); 
  11.  
  12.    type Real is digits 15; -- Higher precision might slow down numerics 
  13.  
  14.    subtype Pix_Range_x is Integer range -500 .. 500; 
  15.    subtype Pix_Range_y is Integer range -500 .. 500; 
  16.  
  17.    Min_x : constant Real := -2.0; 
  18.    Max_x : constant Real :=  2.0; 
  19.    Min_y : constant Real := -2.0; 
  20.  
  21.    Resolution : constant Real := 
  22.      (Max_x - Min_x) / Real (Pix_Range_x'Last - Pix_Range_x'First + 1); 
  23.  
  24.    Divergence_Limit : constant Natural := 1_000; 
  25.  
  26.    type Natural_Array is array (Integer range <>) of Natural; 
  27.  
  28.    Mandelbrot_Set : array (Pix_Range_x) of Natural_Array (Pix_Range_y); 
  29.  
  30.    package Complex_Types is new Generic_Complex_Types (Real); 
  31.    use Complex_Types; 
  32.  
  33.    type Jobs is record 
  34.       Origin     : Complex; 
  35.       Resolution : Real; 
  36.    end record; 
  37.  
  38. end Specs;