Home Page ] [ Eiffel Archive ] [ Eiffel Classes and Clusters ]

Arc de Triomphe clipart (2486 bytes)Factorial Based (FB) Numbers v0.2


Written by Nicolas Waquier (nicolas@esclare.fdn.org)

factorial-0.2.tar.gz (13,225 bytes)


Licensing

Status

Contents

FACTORIAL
the BIG INTEGER class
F_TEST
to test the cluster

Target Use

Where common numbers (integers, real, double) are not appropriate. For big numbers.

Future Plans

Requirements

Compiler
Tower Eiffel 1.3.1.0
Clusters
Kernel
Time to compile
11 sec Eiffel -> C

Development platform

Short Form

indexing

        calculus, precision;
        names: fb, big_integers;
        size: dynamic;
       
class interface FACTORIAL

ancestors

        FACTORIAL
                COMPARABLE_NUMERIC
                        COMPARABLE
                                PART_COMPARABLE
                        NUMERIC

feature summary

        infix "*" (other : like Current) : like Current
        infix "+" (other : like Current) : like Current
        prefix "+" : like Current
        infix "-" (other : like Current) : like Current
        prefix "-" : like Current
        infix "/" (other : like Current) : like Current
        infix "<" (other : like Current) : BOOLEAN
        infix "<=" (other : like Current) : BOOLEAN
        infix ">" (other : like Current) : BOOLEAN
        infix ">=" (other : like Current) : BOOLEAN
        infix "^" (exp : INTEGER) : like Current
        abs : like Current
        compare (other : like Current) : INTEGER
        copy (other : like Current)
        from_integer (i : INTEGER)
        gcd (other : like Current) : like Current
        greatest_common_divisor (other : like Current) : like Current
        integer_representable : BOOLEAN
        is_equal (other : like Current) : BOOLEAN
        make
        manifest (entry : ARRAY [INTEGER])
        max (other : like Current) : like Current
        min (other : like Current) : like Current
        one : FACTORIAL
        out : STRING
        setup (other : like Current)
        sign : INTEGER
        to_integer : INTEGER
        valid_divisor (other : like Current) : BOOLEAN
        zero : FACTORIAL

creation

        make, from_integer, setup, manifest

inherited features

        -- From COMPARABLE:
        infix "<=", compare, max, min
        -- From PART_COMPARABLE:
        infix ">", infix ">="
        -- From NUMERIC:
        prefix "+"

feature specification

        -- Creation
        make
                        -- create a new FB number, set it to zero.
        setup (other : like Current)
                        -- create a new FB number regarding other.
        manifest (entry : ARRAY [INTEGER])
                        -- create a new FB number from a manifest-array of integers.
        from_integer (i : INTEGER)
                        -- create a new FB number from integer i.

feature specification

        -- info
        is_equal (other : like Current) : BOOLEAN
                        -- compare other with Current.
                require
                        other_not_void : other /= void;
        out : STRING
                        -- New string containing a printable representation of Current.
        sign : INTEGER
                        -- the sign of Current.
                ensure
                        negative_condition : (Result = (- 1)) = (Current < zero);
                        zero_condition : (Result = 0) = (not ((Current < zero) or (Current > zero)));
                        positive_condition : (Result = 1) = (Current > zero);
        integer_representable : BOOLEAN
        to_integer : INTEGER
                        -- conversion of Current to an integer.
                require
                        not_too_big : integer_representable;

feature specification

        -- related factorial based numbers
        one : FACTORIAL
                        -- '1'
        zero : FACTORIAL
                        -- '0'
        abs : like Current
                        -- the absolute value of Current
                ensure
                        same_as_negative : (Current < zero) = (compare (- Result) = 0);
                        same_if_positive : (Current >= zero) = (compare (Result) = 0);
        gcd,
        greatest_common_divisor (other : like Current) : like Current
                        -- the GCD between Current and other.

feature specification

        -- comparison
        infix "<" (other : like Current) : BOOLEAN
                        -- Is Current less than other?
                require
                        other /= void
                ensure
                        other_not_less_or_equal : Result = (not (other <= Current));
                        consistent : Result implies (not (other <= Current));
                        not_reflexive : (Current = other) implies (not Result);
                        other_not_less_or_equal : Result = (not (other <= Current));
                        consistent : Result implies (not (other <= Current));
                        not_reflexive : (Current = other) implies (not Result);

feature specification

        -- operations
        infix "+" (other : like Current) : like Current
                        -- Sum of Current and other
                require
                        other /= void
        infix "-" (other : like Current) : like Current
                        -- Difference between Current  and other
                require
                        other /= void
        prefix "-" : like Current
                        -- Unary subtraction applied to Current
        infix "*" (other : like Current) : like Current
                        -- multiplication
                require
                        other_not_void : other /= void;
        infix "/" (other : like Current) : like Current
                        -- division
                        -- not implemented
                require
                        other_not_void : other /= void;
                        valid_divisor : valid_divisor (other);
        infix "^" (exp : INTEGER) : like Current
                        -- not implemented
                require
                        non_negative_exponent : exp >= 0;

feature specification

        -- other
        valid_divisor (other : like Current) : BOOLEAN
                        -- not implemented
                require
                        other_not_void : other /= void;
        copy (other : like Current)
                        -- set Current a copy of other
                require
                        other_not_void : other /= void;
                        conformance : other.conforms_to (Current);
                ensure
                        result_is_equal : is_equal (other);

end interface -- class FACTORIAL

Home Page ] [ Eiffel Archive ] [ Eiffel Classes and Clusters ]