-- -*- mode: eiffel -*-
-- $Id: ary3.se,v 1.1 2001/05/31 02:27:48 doug Exp $
-- http://www.bagley.org/~doug/shootout/

-- Friedrich Dominicus points out that it is about twice as fast
-- when we substitute NATIVE_ARRAY for ARRAY.  I've commented out
-- my original code below and now use NATIVE_ARRAY.

class ARY3

creation make

feature

   make is

      local
         x: NATIVE_ARRAY[INTEGER];
         y: NATIVE_ARRAY[INTEGER];
--     x: ARRAY[INTEGER];
--     y: ARRAY[INTEGER];
     i,k,n: INTEGER;
      do
     if argument_count = 1 then
        n := argument(1).to_integer
     else
        n := 1
     end

         x := x.calloc(n);
         y := y.calloc(n);
--     !!x.make(0,n)
--     !!y.make(0,n)

     from
        i := 0
     until
        i = n
     loop
        x.put(i + 1, i)
        i := i + 1
     end
     from
        k := 0
     until
        k = 1000
     loop
        from
           i := n-1
        until
           i < 0
        loop
           y.put(x.item(i) + y.item(i),i)
           i := i - 1
        end
        k := k + 1
     end

         std_output.put_integer(y.item(0))
         std_output.put_character(' ')
         std_output.put_integer(y.item(n-1))
         std_output.put_character('%N')
      end
end