6.11.174 sqrtf Function
Calculates the square root of a single precision floating-point value.
Include
<math.h>
Prototype
float sqrtf(float x);
Argument
x
- a non-negative floating-point value
Return Value
Returns the non-negative square root of x
.
Remarks
If x
is less than 0, a domain error will occur and errno
will be set to EDOM
.
When targeting Cortex-M devices, MPLAB XC32 uses different algorithms for
sqrtf()
, based on the optimization level selected. When level
s
optimizations (-Os
) have been specified, square roots
are performed using the Newton algorithm, which can produce smaller code. For all other
optimization levels, the Kahan algorithm is used. The square root for some values might differ
slightly based on the algorithm chosen, but in both cases, they should produce answers ±1 ulp
(unit of least precision).
Example
See the notes at the beginning of this chapter or section for
information on using printf()
or scanf()
(and other functions reading and writing the stdin
or
stdout
streams) in the example code.
#include <math.h>
#include <stdio.h>
#include <errno.h>
int main(void)
{
double x;
errno = 0;
x = sqrtf (0.0F);
if (errno)
perror("Error");
printf("The square root of 0.0F is %f\n", x);
errno = 0;
x = sqrtf (9.5F);
if (errno)
perror("Error");
printf("The square root of 9.5F is %f\n", x);
errno = 0;
x = sqrtf (-25.0F);
if (errno)
perror("Error");
printf("The square root of -25F is %f\n", x);
}
Example Output
The square root of 0.0F is 0.000000
The square root of 9.5F is 3.082207
Error: domain error
The square root of -25F is nan