Bug 4455 – Taking the sqrt of an integer shouldn't require an explicit cast.

Status
REOPENED
Severity
normal
Priority
P3
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2010-07-13T13:56:00Z
Last change time
2024-12-01T16:13:29Z
Assigned to
No Owner
Creator
David Simcha
Moved to GitHub: phobos#9888 →

Comments

Comment #0 by dsimcha — 2010-07-13T13:56:00Z
This one's been around for ages, but has just now started bothering me enough to file a bug report: import std.math; void main() { uint num = 1; auto ans = sqrt(num); } Error: test.d(5): Error: function std.math.sqrt called with argument types: ((uint)) matches both: std.math.sqrt(float x) and: std.math.sqrt(real x) I guess the solution is to make long and ulong overloads that forward to std.math.sqrt(real x).
Comment #1 by bearophile_hugs — 2010-07-13T14:25:18Z
Partially unrelated: an efficient D compiler can desire to implement the sqrt with SSE instructions like SQRTSS RSQRTSS SQRTPS and RSQRTPS, that have floats or doubles in input or output. So I think a double sqrt(double) too can be useful, to avoid the useless argument passing of 10-12-16 bytes (necessary for an argument of type real) for the computation of sqrt on a double.
Comment #2 by dsimcha — 2010-08-11T19:45:25Z
Fixed SVN.
Comment #3 by dlang — 2019-09-12T07:46:28Z
Still there, or crept in again.
Comment #4 by robert.schadek — 2024-12-01T16:13:29Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9888 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB