Related Articles

Related Articles

__builtin_inf() functions of GCC compiler
  • Difficulty Level : Hard
  • Last Updated : 18 Jul, 2019

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :