with Ada.Numerics ; package angles is degrees_n_cycle : constant := 360 ; minutes_n_degree : constant := 60 ; minutes_n_cycle : constant := minutes_n_degree * degrees_n_cycle ; seconds_n_minute : constant := 60 ; seconds_n_degree : constant := seconds_n_minute * minutes_n_degree ; seconds_n_cycle : constant := seconds_n_degree * degrees_n_cycle ; subtype degrees is natural range 0..degrees_n_cycle ; subtype minutes is natural range 0..minutes_n_degree ; subtype seconds is natural range 0..seconds_n_minute ; subtype radians is long_long_float range 0.0 .. 2.0 * Ada.Numerics.Pi ; radians_n_cycle : constant radians := radians'Last ; degrees_n_radian : constant Long_Long_Float := Long_Long_Float(degrees_n_cycle) / radians_n_cycle ; minutes_n_radian : constant Long_Long_Float := Long_Long_Float(minutes_n_cycle) / radians_n_cycle ; seconds_n_radian : constant Long_Long_Float := Long_Long_Float(seconds_n_cycle) / radians_n_cycle ; function R( d : degrees ; m : minutes := 0 ; s : seconds := 0 ) return radians ; procedure D( r : radians ; deg : access degrees ; min : access minutes ; sec : access seconds); end angles ;