__builtin_inf() functions of GCC compiler

These fuctions do not need to include any header file to use them. So it provides faster usage, as these are Built-in functions of GCC compiler which is most used compiler, even in competitive programming.

Note: If the compiler shows warning of overflow, use casting before __builtin_inf() function as

(data_type)__builtin_inf()

  1. __builtin_inf(void): This function returns positive infinity which will then converted to DBL_MAX of C language limits.h header file Macro. Its return data type is double.
    Example:

    if __builtin_inf() is used
    it returns infinte
    
    Output: inf
    

    Here is a C++ program which shows the use of this function:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #include <iostream>
    using namespace std;
      
    int main()
    {
        // infinite value (<b>inf</b>)
        double double_inf = __builtin_inf();
      
        cout << double_inf << endl;
        return 0;
    }

    chevron_right

    
    

    Output:

    inf
    
  2. __builtin_infd32(void): These function returns maximum value of 4-byte integer and return data type is 32-bit integer.

    Example:

    if __builtin_infd32() is used
    it returns the maximum value of
    the 32-bit integer
    
    Output: 2147483647
    

    Here is a C++ program which shows the use of this function:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #include <iostream>
    using namespace std;
      
    int main()
    {
        // function returns highest signed integer value
        int int_inf = (int)__builtin_infd32();
      
        // you can use __builtin_inf() function
        // as well and then cast to integer
        int int_inf2 = (int)__builtin_inf();
      
        cout << int_inf << endl;
        cout << int_inf2 << endl;
      
        // function returns highest unsigned integer value
        unsigned int unsinged_int_inf
            = (unsigned int)__builtin_infd32();
      
        // you can use __builtin_inf() function as well
        // and then cast to unsigned integer
        unsigned int unsinged_int_inf2
            = (unsigned int)__builtin_inf();
      
        cout << unsinged_int_inf << endl;
        cout << unsinged_int_inf2 << endl;
      
        return 0;
    }

    chevron_right

    
    

    Output:

    2147483647
    2147483647
    4294967295
    4294967295
    
  3. __builtin_infd64(void): This function returns Highest value that can be represented by 8 byte integer which is highest value of integer we can use in C++.

    Example:

    if __builtin_infd64() is used
    it returns the maximum value of
    the 64-bit integer
    
    Output: 9223372036854775807
    

    Here is a C++ program which shows the use of this function:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #include <iostream>
    using namespace std;
      
    int main()
    {
        // highest signed 8 byte value
        long long int long_inf = (long long int)__builtin_infd64();
      
        // you can use __builtin_inf() as well
        // and then cast to long long int
        long long int long_inf2
            = (long long int)__builtin_inf();
      
        cout << long_inf << endl;
        cout << long_inf2 << endl;
      
        // highest unsiged 8 byte value
        unsigned long long int unsigned_longlong_inf
            = (unsigned long long int)__builtin_infd64();
      
        // you can use __builtin_inf() as well
        // and then cast to unsigned long long int
        unsigned long long int unsigned_longlong_inf2
            = (unsigned long long int)__builtin_inf();
      
        cout << unsigned_longlong_inf << endl;
        cout << unsigned_longlong_inf2 << endl;
        return 0;
    }

    chevron_right

    
    

    Output:

    9223372036854775807
    9223372036854775807
    18446744073709551615
    18446744073709551615
    
  4. __builtin_infd128(void): As the maximum size that can be used for integer is 64-bit in C/C++, this function give the same result as __builtin_infd64().

    Example:

    if __builtin_infd128() is used
    it returns the maximum value of
    the 64-bit integer
    
    Output: 9223372036854775807
    
  5. __builtin_inff(void): These function returns float maximum value means 4-byte maximum decimal point value.

    Example:

    if __builtin_inff() is used
    it returns the maximum value of
    the 32-bit float
    
    Output: inf
    

    Here is a C++ program which shows the use of this function:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #include <iostream>
    using namespace std;
      
    int main()
    {
        float float_inf = __builtin_inff();
      
        // you can use __builtin_inf() as well
        // and then cast it to float data type
        float float_inf2 = (float)__builtin_inf();
      
        cout << float_inf << endl;
        cout << float_inf2 << endl;
        return 0;
    }

    chevron_right

    
    

    Output:

    inf
    inf
    
  6. __builtin_infl(void): These function returns maximum long double data type value.

    Example:

    if __builtin_infl() is used
    it returns the maximum value of
    the long double type
    
    Output: inf
    

    Here is a C++ program which shows the use of this function:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #include <iostream>
    using namespace std;
      
    int main()
    {
        long double long_double_inf = __builtin_infl();
      
        // you can use __builtin_inf() as well
        // and then cast it to float data type
        long double long_double_inf2
            = (long double)__builtin_inf();
      
        cout << long_double_inf << endl;
        cout << long_double_inf2 << endl;
        return 0;
    }

    chevron_right

    
    

    Output:

    inf
    inf
    
  7. In the recent versions of GCC compiler, these are two new functions: __builtin_infn(void) & __builtin_infnx(void). One can replace n with 32 or 64 and it will return inf value respectively of 32-bit, 64-bit.

Similar article: Builtin functions of GCC compiler



My Personal Notes arrow_drop_up

I am doing BTech at Dhirubhai Ambani Institute of Information and Communication Technology

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 :


1


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