| 5.5 Class NUMERIC | 
indexing
description: "Objects to which numerical operations are applicable"; note: "The model is that of a commutative ring."
deferred class interface
NUMERIC
feature -- Access
    one: like Current
        -- Neutral element for "*" and "/"
    deferred
    ensure
        Result_exists: Result /= Void
    zero: like Current
        -- Neutral element for "+" and "-"
    deferred
    ensure
        Result_exists: Result /= Void
feature -- Status report
    divisible (other: like Current): BOOLEAN
        -- May current object be divided by other?
    require
        other_exists: other /= Void
    deferred
    exponentiable (other: NUMERIC): BOOLEAN
        -- May current object be elevated to the power other?
    require
        other_exists: other /= Void
    deferred
feature -- Basic operations
    infix "+" (other: like Current): like Current
        -- Sum with other (commutative).
    require
        other_exists: other /= Void
    deferred
    ensure
        result_exists: Result /= Void;
        commutative: equal (Result, other + Current)
    infix "-" (other: like Current): like Current
        -- Result of subtracting other
    require
        other_exists: other /= Void
    deferred
    ensure
        result_exists: Result /= Void
    infix "*" (other: like Current): like Current
        -- Product by other
    require
        other_exists: other /= Void
    deferred
    ensure
        result_exists: Result /= Void
    infix "/" (other: like Current): like Current
        -- Division by other
    require
        other_exists: other /= Void;
        good_divisor: divisible (other)
    deferred
    ensure
        result_exists: Result /= Void
    infix "^" (other: NUMERIC): NUMERIC
        -- Current object to the power other
    require
        other_exists: other /= Void;
        good_exponent: exponentiable (other)
    deferred
    ensure
        result_exists: Result /= Void
    prefix "+": like Current
        -- Unary plus
    deferred
    ensure
        result_exists: Result /= Void
    prefix "-": like Current
        -- Unary minus
    deferred
    ensure
        result_exists: Result /= Void
invariant
neutral_addition: equal (Current + zero, Current); self_subtraction: equal (Current - Current, zero); neutral_multiplication: equal (Current * one, Current); self_division: divisible (Current) implies equal (Current / Current, one)
end
| 
            Copyright © 1995, Nonprofit
            International Consortium for Eiffel mailto:nice@atlanta.twr.com Last Updated: 26 October 1997  |