sqrt, sqrtl and sqrtf in C++

The cmath header defines two more inbuilt functions for calculating square root of a number (apart from sqrt which takes double as an arguement) which has an arguement of type float and long double.

  1. double sqrt(double arg): It returns the square root of a number to type double

    Syntax : double sqrt(double arg)
    
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // CPP code to illustrate
    // the use of sqrt function.
    #include <cmath>
    #include <iomanip>
    #include <iostream>
      
    using namespace std;
      
    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);
    }

    chevron_right

    
    

    Output:

    15.000000000000
    17.320508075689
    

    Errors and exceptions associated with this function:
    (Thanks to sunny6041 for contributing this section)

    1. It is mandatory to give both the arguments otherwise it will give error no matching function for call to ‘sqrt()’ like this.
      filter_none

      edit
      close

      play_arrow

      link
      brightness_4
      code

      #include <iostream>
      #include <cmath>
      using namespace std;
        
      int main()
      {
          double answer;
                
          answer = sqrt();
          cout << "Square root of " << a 
               << " is " << answer << endl;
        
          return 0;
      }

      chevron_right

      
      

      Output:

      prog.cpp:9:16: error: no matching function for call to 'sqrt()'
      
    2. If we pass a negative value in the argument domain error occurs. and the output will be the Square root of -a is -nan.
      filter_none

      edit
      close

      play_arrow

      link
      brightness_4
      code

      #include <iostream>
      #include <cmath>
      using namespace std;
        
      int main()
      {
          double a = -2 ,  answer;
                
          answer = sqrt(a);
          cout << "Square root of " << a 
               << " is " << answer << endl;
        
          return 0;
      }

      chevron_right

      
      

      Output:

      Square root of -2 is -nan
      
      
  2. float sqrtf(float arg): It returns the square root of a number to type float

    Syntax : float sqrtf(float arg)
    
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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);
    }

    chevron_right

    
    

    Output:

    15.000000000000
    17.320508956909
    
  3. long double sqrtl(long double arg): It returns the square root of a number to type long double with more precision. Advantage of using this function is that when working with integers of the order 1018, calculating its square root with sqrt function may give an incorrect answer due to precision errors as default functions in programming language works with floats/doubles. But this will always give an accurate answer.

    Syntax : long double sqrtl(long double arg)
    

    An illustration given below shows the exact difference when working with long integers with sqrt and sqrtl.
    Using sqrt function.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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);
    }

    chevron_right

    
    

    Output:

    1000000000.000000000000
    1000000000.000000000000
    

    Output:

    1000000000.000000000000
    1000000000.000000000000
    

    Using sqrtl function

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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);
    }

    chevron_right

    
    

    Output:

    1000000000.000000000000
    999999999.999999999476
    


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.