note description: "Some useful facilities on objects of basic types." library: "Free implementation of ELKS library" status: "See notice at end of class." legal: "See notice at end of class." date: "$Date: 2018-04-28 20:36:37 +0000 (Sat, 28 Apr 2018) $" revision: "$Revision: 101691 $" class BASIC_ROUTINES create default_create feature -- Conversion charconv (i: INTEGER_32): CHARACTER_8 -- Character associated with integer value i. do Result := (i & 255).to_character_8 ensure instance_free: class end feature -- Basic operations abs (n: INTEGER_32): INTEGER_32 obsolete "Use {INTEGER}.abs instead. [2018-06-01]" -- Absolute value of n. do if n < 0 then Result := - n else Result := n end ensure instance_free: class non_negative_result: Result >= 0 end sign (n: INTEGER_32): INTEGER_32 obsolete "Use {INTEGER}.sign instead. [2018-06-01]" -- Sign of n: -- -1 if n < 0 -- 0 if n = 0 -- +1 if n > 0 do if n < 0 then Result := -1 elseif n > 0 then Result := 1 end ensure instance_free: class correct_negative: (n < 0) = (Result = -1) correct_zero: (n = 0) = (Result = 0) correct_positive: (n > 0) = (Result = 1) end rsign (r: REAL_32): INTEGER_32 obsolete "Use {REAL_32}.sign instead. [2018-06-01]" -- Sign of r: -- -1 if r < 0 -- 0 if r = 0 -- +1 if r > 0 do if r < 0.to_real then Result := -1 elseif r > 0.to_real then Result := 1 end ensure instance_free: class correct_negative: (r < 0.to_real) = (Result = -1) correct_zero: (r = 0.to_real) = (Result = 0) correct_positive: (r > 0.to_real) = (Result = 1) end bottom_int_div (n1, n2: INTEGER_32): INTEGER_32 -- Greatest lower bound of the integer division of n1 by n2. do Result := n1 // n2 if (n1 >= 0 xor n2 > 0) and then n1 \\ n2 /= 0 then Result := Result - 1 end ensure instance_free: class end up_int_div (n1, n2: INTEGER_32): INTEGER_32 -- Least upper bound of the integer division -- of n1 by n2. do Result := n1 // n2 if not (n1 >= 0 xor n2 > 0) and then n1 \\ n2 /= 0 then Result := Result + 1 end ensure instance_free: class end note copyright: "Copyright (c) 1984-2018, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software 5949 Hollister Ave., Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end -- class BASIC_ROUTINES
Generated by ISE EiffelStudio