[pythran] Re: question on slice.hpp

  • From: Pierrick Brunet <pierrick.brunet@xxxxxxxx>
  • To: pythran@xxxxxxxxxxxxx
  • Date: Thu, 04 Sep 2014 22:07:12 +0200

Hum, You may be right. The real formul if yours for positive step and -1 instead of +1 for negative step.


This should be timed for comparison before the modification. (I will do it once current modification are approved)
Thanks for this notification.

On 04/09/2014 20:58, Neal Becker wrote:
I think it is probably faster, avoiding int <-> float conversions, and potentially more accurate.


On Thu, Sep 4, 2014 at 2:56 PM, Pierrick Brunet <pierrick.brunet@xxxxxxxx <mailto:pierrick.brunet@xxxxxxxx>> wrote:

    I think it is rounded up as the slice : 1:5:3 is 2 with a roundup
    and 1 with a round down with your expression.

    It looks like your formule have the same final behavior but need
    more operation to perform it. Do you have any example where the
    current function fail?



    On 04/09/2014 20:32, Neal Becker wrote:
    In pythran/pythonic/types/slice.hpp

                long size() const
                {
                    assert( not upper.is_none and not lower.is_none
    and not step.is_none );
                    return std::max(0L, long(ceil(double(upper -
    lower)/double(step))));
                }

    Maybe this should be:
    (using python code here:)

    def roundup_divide (a, b):
        return (a + b - 1) // b

    return std::max(0L, roundup_divide (upper-lower, step));

    But on the other hand, did you really mean to roundup?  Should
    the size of a slice be rounded down?

-- /Those who don't understand recursion are doomed to repeat it/




--
/Those who don't understand recursion are doomed to repeat it/

Other related posts: