Thanks Tim, that makes total sense, though I was thinking of a way of
expressing this in a matlab-ish kind of way.

How about defining a macro to override type promotion, similar to @inbounds?

@nopromote b = A / uint8(2)

I would like something shorter, but we could decide on the exact name later.
Does this make sense?


------------------------------------------
Carlos


On Fri, Apr 4, 2014 at 11:40 AM, Tim Holy <tim.h...@gmail.com> wrote:

> This doesn't address your bigger question, but for truncating division by
> n I
> usually use b[i] = div(A[i], convert(eltype(A), n)). For the particular
> case
> of dividing by 2, an even better choice is b[i] = A[i] >> 1.
>
> --Tim
>
> On Friday, April 04, 2014 02:09:24 AM Carlos Becker wrote:
> > I've seen previous posts in this list about this, but either I missed
> some
> > of them or this particular issue is not addressed. I apologize if it is
> the
> > former.
> >
> > I have a Uint8 array and I want to divide (still in Uint8) by 2. This is
> > very handy when dealing with large images: no need to use more memory
> than
> > needed.
> > So, for example:
> >
> > A = rand(Uint8, (100,100));   # simulated image
> >
> > b = A / uint8(2)
> >
> > typeof( b )  # ==> returns Array{Float32,2}
> >
> >
> > I understand why one may want that, but is there a way to override it and
> > do the plain, element-wise uint8-by-uint8 division?
> > (ie ignore promotion rules)
> >
> > Thanks.
>

Reply via email to