-- This file is free software, which comes along with SmartEiffel. This -- software is distributed in the hope that it will be useful, but WITHOUT -- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -- FITNESS FOR A PARTICULAR PURPOSE. You can modify it as you want, provided -- this header is kept unaltered, and a notification of the changes is added. -- You are allowed to redistribute it and sell it, alone or as a part of -- another product. -- Copyright (C) 1994-2002 LORIA - INRIA - U.H.P. Nancy 1 - FRANCE -- Dominique COLNET and Suzanne COLLIN - SmartEiffel@loria.fr -- http://SmartEiffel.loria.fr -- deferred class NUMERIC -- -- This class describes a ring. -- inherit HASHABLE feature infix "+" (other: like Current): like Current is -- Sum with 'other' (commutative). require other /= Void deferred end infix "-" (other: like Current): like Current is -- Result of substracting `other'. require other /= Void deferred end infix "*" (other: like Current): like Current is -- Product by `other'. require other /= Void deferred end infix "/" (other: like Current): NUMERIC is -- Division by `other'. require other /= Void divisible (other) deferred end prefix "+" : like Current is -- Unary plus of `Current'. deferred end prefix "-" : like Current is -- Unary minus of `Current'. deferred end divisible(other: like Current): BOOLEAN is -- May `Current' be divided by `other' ? require other /= Void deferred end one: like Current is -- Neutral element for "*" and "/". deferred end zero: like Current is -- Neutral element for "+" and "-". deferred end sign: INTEGER_8 is -- Sign of Current (0 -1 or 1). deferred ensure -1 <= Result; Result <= 1 end end -- NUMERIC