Re: D do not know which function to use apparently

2018-12-11 Thread Andrea Fontana via Digitalmars-d-learn

On Tuesday, 11 December 2018 at 15:17:10 UTC, Narxa wrote:

Yes, it worked:
---
int var = cast(int) floor(sqrt( cast(float) n ));


I thought floor already returned an 'int' but I was mistaken.

Thank you very much.


I think you don't need floor.

int var = cast(int)(sqrt(cast(float)n));

or:

int var = cast(int)(float(i).sqrt);

or:

int var = float(i).sqrt.to!int;

Andrea


Re: D do not know which function to use apparently

2018-12-11 Thread Narxa via Digitalmars-d-learn
On Tuesday, 11 December 2018 at 14:53:02 UTC, Steven 
Schveighoffer wrote:

On 12/11/18 9:47 AM, Narxa wrote:
On Tuesday, 11 December 2018 at 14:22:30 UTC, Adam D. Ruppe 
wrote:

On Tuesday, 11 December 2018 at 14:16:05 UTC, Narxa wrote:

int var = floor(sqrt(n)) // where 'n' is a 'const int'


You can just cast it to float:

floor(sqrt( cast(float) n ));

and it will work.


It produced the following error:

Error: cannot implicitly convert expression 
floor(sqrt(cast(float)n)) of type float to int



I am using 'dmd' compiler if it matters.


You need to cast the result back to int.

-Steve


Yes, it worked:
---
int var = cast(int) floor(sqrt( cast(float) n ));


I thought floor already returned an 'int' but I was mistaken.

Thank you very much.


Re: D do not know which function to use apparently

2018-12-11 Thread Steven Schveighoffer via Digitalmars-d-learn

On 12/11/18 9:47 AM, Narxa wrote:

On Tuesday, 11 December 2018 at 14:22:30 UTC, Adam D. Ruppe wrote:

On Tuesday, 11 December 2018 at 14:16:05 UTC, Narxa wrote:

int var = floor(sqrt(n)) // where 'n' is a 'const int'


You can just cast it to float:

floor(sqrt( cast(float) n ));

and it will work.


It produced the following error:

Error: cannot implicitly convert expression floor(sqrt(cast(float)n)) of 
type float to int



I am using 'dmd' compiler if it matters.


You need to cast the result back to int.

-Steve


Re: D do not know which function to use apparently

2018-12-11 Thread Narxa via Digitalmars-d-learn

On Tuesday, 11 December 2018 at 14:22:30 UTC, Adam D. Ruppe wrote:

On Tuesday, 11 December 2018 at 14:16:05 UTC, Narxa wrote:

int var = floor(sqrt(n)) // where 'n' is a 'const int'


You can just cast it to float:

floor(sqrt( cast(float) n ));

and it will work.


It produced the following error:

Error: cannot implicitly convert expression 
floor(sqrt(cast(float)n)) of type float to int



I am using 'dmd' compiler if it matters.


Re: D do not know which function to use apparently

2018-12-11 Thread Adam D. Ruppe via Digitalmars-d-learn

On Tuesday, 11 December 2018 at 14:16:05 UTC, Narxa wrote:

int var = floor(sqrt(n)) // where 'n' is a 'const int'


You can just cast it to float:

floor(sqrt( cast(float) n ));

and it will work.


D do not know which function to use apparently

2018-12-11 Thread Narxa via Digitalmars-d-learn

Hello, people!


The following case:
---
int var = floor(sqrt(n)) // where 'n' is a 'const int'

Produces the following error:
-
Error: std.math.sqrt called with argument types (const(int)) 
matches both:
/usr/include/dmd/phobos/std/math.d(2067): std.math.sqrt(float 
x)

and:
/usr/include/dmd/phobos/std/math.d(2073): std.math.sqrt(real 
x)



Please, could you tell me how do I solve this?!

Thank you!