octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ambiguous call to "pow(int, unsigned int&)" in __magick_read__.cc:76


From: c.
Subject: Re: ambiguous call to "pow(int, unsigned int&)" in __magick_read__.cc:763
Date: Sun, 28 Aug 2011 20:22:44 +0200

On 27 Aug 2011, at 20:03, Jordi Gutiérrez Hermoso wrote:

> 2011/8/27 c. <address@hidden>:
>> 
>> On 27 Aug 2011, at 18:37, Jordi Gutiérrez Hermoso wrote:
>> 
>>> If that's the version of pow you intended to call, there is nothing
>>> wrong in disambiguating the call with a cast, especially if it's
>>> not a C-style cast. If that fixes your build, I suggest you push
>>> that patch. I am not seeing this problem on a more recent g++.
>> 
>> I was just concerned that casting back-and-forth from int to double
>> might introduce some unexpected behaviour due to roundoff, do you
>> think it is always safe to use that approach to do power elevation
>> with integer inputs?
> 
> The precision of an int is less than 52 bits in all architectures I
> know of, which is the precision of a double, so it is very unlikely to
> introduce a problem to cast an int to a double. In a more dubious
> situation (e.g. casting a long to a double), it may be recommended to
> use Boost's numeric_cast functions.
> 
> We've avoided Boost dependencies so far, but Boost is a very respected
> library from which the C++ standard library is made nowadays, so I
> don't think we should shy away from it if we see that it solves a
> problem for us particularly well.
> 
> - Jordi G. H.

I see at other places in the file the same problem is handled by

  // FIXME -- maybe simply using bit shifting would be better?
  unsigned int div_factor = pow (2.0, static_cast<int> (bitdepth)) - 1;

do, is it OK if I push the attached patch?
c.

Attachment: open_aEwDTw55.txt
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]