Hay varias funciones disponibles en la biblioteca de C++ para calcular la raíz cuadrada de un número . Más prominentemente, se usa sqrt . Se necesita el doble como argumento. El encabezado <cmath> define dos funciones incorporadas más para calcular la raíz cuadrada de un número (aparte de sqrt) que tiene un argumento de tipo float y long double . Por lo tanto, todas las funciones utilizadas para calcular la raíz cuadrada en C++ son:
Función |
Tipo de datos |
---|---|
sqrt |
doble |
cuadrado |
flotar |
sqrtl |
largo doble |
Las funciones se han discutido en detalle a continuación:
A) double sqrt(double arg) : Devuelve la raíz cuadrada de un número para escribir double.
Sintaxis:
double sqrt(double arg)
CPP
// CPP code to illustrate the use of sqrt function #include <cmath> #include <iomanip> #include <iostream> using namespace std; // Driver Code int main() { double val1 = 225.0; double val2 = 300.0; cout << fixed << setprecision(12) << sqrt(val1) << endl; cout << fixed << setprecision(12) << sqrt(val2) << endl; return (0); }
15.000000000000 17.320508075689
Complejidad temporal: O(√n)
Espacio auxiliar: O(1)
Errores y excepciones asociados con esta función:
1. Es obligatorio dar el argumento de lo contrario, dará un error sin función coincidente para la llamada a ‘sqrt()’ como se muestra a continuación,
CPP
// CPP Program to demonstrate errors in double sqrt() #include <cmath> #include <iostream> using namespace std; // Driver Code int main() { double answer; answer = sqrt(); cout << "Square root of " << a << " is " << answer << endl; return 0; }
Producción
prog.cpp:9:19: error: no matching function for call to ‘sqrt()’ answer = sqrt();
Complejidad temporal: O(√n)
Espacio auxiliar: O(1)
2. Si pasamos un valor negativo en el dominio del argumento, se produce un error y la salida será la raíz cuadrada de -a, que es -nan.
CPP
// CPP Program to demonstrate errors in double sqrt() #include <cmath> #include <iostream> using namespace std; // Driver Code int main() { double a = -2, answer; answer = sqrt(a); cout << "Square root of " << a << " is " << answer << endl; return 0; }
Producción:
Square root of -2 is -nan
Complejidad de Tiempo: O(√n)
Espacio Auxiliar: O(1)
B) float sqrtf(float arg) : Devuelve la raíz cuadrada de un número a tipo float.
Sintaxis:
float sqrtf(float arg)
CPP
// CPP code to illustrate the use of sqrtf function #include <cmath> #include <iomanip> #include <iostream> using namespace std; int main() { float val1 = 225.0; float val2 = 300.0; cout << fixed << setprecision(12) << sqrtf(val1) << endl; cout << fixed << setprecision(12) << sqrtf(val2) << endl; return (0); }
15.000000000000 17.320508956909
Complejidad de Tiempo: O(√n)
Espacio Auxiliar: O(1)
C) long double sqrtl(long double arg) : Devuelve la raíz cuadrada de un número para escribir long double con más precisión.
Ventaja de la función sqrtl: cuando se trabaja con números enteros del orden de 10 18 , calcular su raíz cuadrada con la función sqrt puede dar una respuesta incorrecta debido a errores de precisión, ya que las funciones predeterminadas en el lenguaje de programación funcionan con flotantes/dobles. Pero esto siempre dará una respuesta precisa.
Sintaxis:
long double sqrtl(long double arg)
A continuación se muestra una ilustración que muestra la diferencia exacta cuando se trabaja con números enteros largos con sqrt y sqrtl,
1) Usando la función sqrt:
CPP
// CPP code to illustrate the incorrectness of sqrt // function #include <cmath> #include <iomanip> #include <iostream> using namespace std; int main() { long long int val1 = 1000000000000000000; long long int val2 = 999999999999999999; cout << fixed << setprecision(12) << sqrt(val1) << endl; cout << fixed << setprecision(12) << sqrt(val2) << endl; return (0); }
1000000000.000000000000 1000000000.000000000000
Complejidad temporal: O(√n)
Espacio auxiliar: O(1)
2) Usando la función sqrtl:
CPP
// CPP code to illustrate the correctness of sqrtl function #include <cmath> #include <iomanip> #include <iostream> using namespace std; int main() { long long int val1 = 1000000000000000000; long long int val2 = 999999999999999999; cout << fixed << setprecision(12) << sqrtl(val1) << endl; cout << fixed << setprecision(12) << sqrtl(val2) << endl; return (0); }
1000000000.000000000000 999999999.999999999476
Complejidad temporal: O(√n)
Espacio auxiliar: O(1)
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por Nishant Tanwar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA