1. -- Allegro 4.4.2 - Fixed point math routines 
  2. package Allegro.Fixed_Point_Math is 
  3.  
  4.     type Fixed is new Integer; 
  5.  
  6.     ---------------------------------------------------------------------------- 
  7.  
  8.     function itofix( x : Integer ) return Fixed; 
  9.  
  10.     function ftofix( x : Long_Float ) return Fixed; 
  11.  
  12.     function fixtoi( x : Fixed ) return Integer; 
  13.  
  14.     function fixtof( x : Fixed ) return Long_Float; 
  15.  
  16.     function fixceil( x : Fixed ) return Integer; 
  17.  
  18.     function fixfloor( x : Fixed ) return Integer; 
  19.  
  20.     function fixmul( x, y : Fixed ) return Fixed; 
  21.  
  22.     function fixdiv( x, y : Fixed ) return Fixed; 
  23.  
  24.     function fixadd( x, y : Fixed ) return Fixed; 
  25.  
  26.     function fixsub( x, y : Fixed ) return Fixed; 
  27.  
  28.     function fixsin( x : Fixed ) return Fixed; 
  29.  
  30.     function fixcos( x : Fixed ) return Fixed; 
  31.  
  32.     function fixtan( x : Fixed ) return Fixed; 
  33.  
  34.     function fixasin( x : Fixed ) return Fixed; 
  35.  
  36.     function fixacos( x : Fixed ) return Fixed; 
  37.  
  38.     function fixatan( x : Fixed ) return Fixed; 
  39.  
  40.     function fixatan2( y, x : Fixed ) return Fixed; 
  41.  
  42.     function fixsqrt( x : Fixed ) return Fixed; 
  43.  
  44.     function fixhypot( x, y : Fixed ) return Fixed; 
  45.  
  46.     function fixtorad_r return Fixed; 
  47.  
  48.     function radtofix_r return Fixed; 
  49.  
  50.     ---------------------------------------------------------------------------- 
  51.  
  52.     function To_Fixed( x : Integer ) return Fixed renames itofix; 
  53.  
  54.     function To_Fixed( x : Long_Float ) return Fixed renames ftofix; 
  55.  
  56.     function To_Integer( x : Fixed ) return Integer renames fixtoi; 
  57.  
  58.     function To_Long_Float( x : Fixed ) return Long_Float renames fixtof; 
  59.  
  60.     function Ceil( x : Fixed ) return Integer renames fixceil; 
  61.  
  62.     function Floor( x : Fixed ) return Integer renames fixfloor; 
  63.  
  64.     overriding 
  65.     function "*"( x, y : Fixed ) return Fixed renames fixmul; 
  66.  
  67.     overriding 
  68.     function "/"( x, y : Fixed ) return Fixed renames fixdiv; 
  69.  
  70.     overriding 
  71.     function "+"( x, y : Fixed ) return Fixed renames fixadd; 
  72.  
  73.     overriding 
  74.     function "-"( x, y : Fixed ) return Fixed renames fixsub; 
  75.  
  76.     function Sin( x : Fixed ) return Fixed renames fixsin; 
  77.  
  78.     function Cos( x : Fixed ) return Fixed renames fixcos; 
  79.  
  80.     function Tan( x : Fixed ) return Fixed renames fixtan; 
  81.  
  82.     function Asin( x : Fixed ) return Fixed renames fixasin; 
  83.  
  84.     function Acos( x : Fixed ) return Fixed renames fixacos; 
  85.  
  86.     function Atan( x : Fixed ) return Fixed renames fixatan; 
  87.  
  88.     function Atan2( y, x : Fixed ) return Fixed renames fixatan2; 
  89.  
  90.     function Sqrt( x : Fixed ) return Fixed renames fixsqrt; 
  91.  
  92.     function Hypot( x, y : Fixed ) return Fixed renames fixhypot; 
  93.  
  94. private 
  95.  
  96.     pragma Import( C, itofix, "itofix" ); 
  97.     pragma Import( C, ftofix, "ftofix" ); 
  98.     pragma Import( C, fixtoi, "fixtoi" ); 
  99.     pragma Import( C, fixtof, "fixtof" ); 
  100.  
  101.     pragma Import( C, fixceil, "fixceil" ); 
  102.     pragma Import( C, fixfloor, "fixfloor" ); 
  103.  
  104.     pragma Import( C, fixmul, "fixmul" ); 
  105.     pragma Import( C, fixdiv, "fixdiv" ); 
  106.     pragma Import( C, fixadd, "fixadd" ); 
  107.     pragma Import( C, fixsub, "fixsub" ); 
  108.  
  109.     pragma Import( C, fixsin, "fixsin" ); 
  110.     pragma Import( C, fixcos, "fixcos" ); 
  111.     pragma Import( C, fixtan, "fixtan" ); 
  112.     pragma Import( C, fixasin, "fixasin" ); 
  113.     pragma Import( C, fixacos, "fixacos" ); 
  114.     pragma Import( C, fixatan, "fixatan" ); 
  115.     pragma Import( C, fixatan2, "fixatan2" ); 
  116.     pragma Import( C, fixsqrt, "fixsqrt" ); 
  117.     pragma Import( C, fixhypot, "fixhypot" ); 
  118.  
  119.     pragma Import( C, fixtorad_r, "get_fixtorad_r" ); 
  120.     pragma Import( C, radtofix_r, "get_radtofix_r" ); 
  121.  
  122. end Allegro.Fixed_Point_Math;