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