Is there any difference between

1)pow(x,0.5) and sqrt(x).

2)pow(x,1.0/3) and cbrt(x).

Where x is some random integer.

Both of them are same. You can use any, its just a matter of choice.

# Short answer

For square root there might be performance and/or accuracy differences based on your compiler and your standard library implementation.

For cube root most of that still applies, but on top of that `pow`

and `cbrt`

are not the same for negative `x`

(`cbrt`

is the correct one).

# Long answer

## Square root

Using gcc code with `pow(x, 0.5)`

and `sqrt(x)`

compile to different code which (unsurprisingly) calls `pow`

and `sqrt`

respectively. So you would have to check the difference between `pow`

and `sqrt`

. I would wager that because `sqrt`

is the more specialized one it would be quicker and/or more accurate, but you should always measure it if you think that matters.

[gcc output @ godbolt][1]

Clang on the other hand actually converts the `pow(x, 0.5)`

to a call to `sqrt`

to produce very similar instructions in both cases, so I expect more or less identical performance.

[clang output @ godbolt][2]

## Cube root

Here there is a substantial difference. `pow(x, 1.0/3)`

does not work for negative `x`

while `cbrt`

does. This is the main reason why `cbrt`

was added in the first place.

[gcc output @ godbolt][3]

[clang output @ godbolt][4]

Because of the difference neither gcc nor clang could convert `pow(x, 1.0/3)`

to `cbrt`

even if it wanted to. If `x`

is positive you again end up with a similar question as before, is `pow`

or `cbrt`

faster and/or more accurate? Like before I would expect `cbrt`

to have an edge, but you should measure it if you care about it.

[1]: https://godbolt.org/z/JqDZi3

[2]: https://godbolt.org/z/J49623

[3]: https://godbolt.org/z/P_3Iwi

[4]: https://godbolt.org/z/n2bKQg

Thanks a lot it helped me.

If you think it answers your question, like the post and accept it as an answer.

Dont make answers wiki if its not needed. Wikified answers get no karma. This wikifying is reserved for editorials and announcments only.

@vijju123 I didn’t intend to do that, must have checked some box unintentionally. Thanks for fixing it!