[phobos] Bug 4455: Taking sqrt of an integer
Don Clugston
dclugston at googlemail.com
Thu Jul 15 22:32:10 PDT 2010
On 16 July 2010 04:16, David Simcha <dsimcha at gmail.com> wrote:
> On 7/15/2010 9:22 PM, Don Clugston wrote:
>>
>> On 16 July 2010 01:04, David Simcha<dsimcha at gmail.com> wrote:
>>
>>>
>>> So is everyone on board for this? If not, please say something.
>>> Otherwise
>>> I'll make the changes.
>>>
>>
>> It won't work. sqrt is a compiler intrinsic, and can't be changed to a
>> template without modifying the compiler.
>
> (Smacks hand against forehead.) I realized that right after I sent that
> message. I guess the options are, then:
>
> 1. Modify the compiler. I guess the easiest way would be to rename the
> sqrt() intrinsic to sqrtImpl() and have a function called sqrt() in std.math
> that forwards to sqrtImpl().
I think __sqrt() would be a better name. I'd recommend renaming sin()
and cos() at the same time, since the intrinsics are hopelessly
inaccurate for large arguments.
>
> 2. Live with it for now. It's an extremely annoying bug in that math-heavy
> code runs into it constantly, but it's an easy bug to work around.
>
> 3. Get rid of sqrt(float). Walter, or whoever put it there in the first
> place: Why is it there? Do we really need it?
It makes no difference to the generated x87 code. It does affect type
inference, but it's not adding much value.
>
> 4. Make explicit overloads for every single numeric type. This is ugly but
> do-able and would definitely be a 100% solution.
Note that the same issue applies to all std.math functions, although
sqrt() might be the only one that is truly annoying.
More information about the phobos
mailing list