Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Feature request: compile/link option to drop compatibility with other compilers

Marián__VooDooMan__M
New Contributor II
292 Views

Greetings,

I have a feature request. I know Intel is trying so hard to maintain compatibility with GCC under Linux and with MSVC on Windows, respectively.

But my project really needs so badly to convert 128-bit "long double" in x64 mode to the text, but since ICC is stuck to MSVC *.lib's, it is not possible, due to MSVC's restriction, so I need to down-cast it to 64-bit "double". I was discussing this case already on this forum, and I know it was discussed many times.

My project is designed primarily to be compiled with ICC (because ICC has a fairly great benchmarks) and it is time-critical, due to real-time sound generation. And it is intended to be ran only on x64 Windows.

I know I can "steal" code from glibc from Linux's GCC, and use it to convert 128-bit float ("long double") to the text representation, but this is overkill and I am not happy about such solution.

I would really appreciate, if ICC had option "use Intel's CRT libraries instead of MS's ones". Even more, Intel's own CRT library on Windows compiled with ICC possibly could have better speed results, I believe.

Why do you are so sticky to get everything compatible with 3rd party libraries on each system? I know many users need to link 3rd party's library compiled with other compiler within ICC project (and this is not my case), but I do believe such option I have mentioned above would be really fine.

0 Kudos
6 Replies
SergeyKostrov
Valued Contributor II
292 Views
>>...But my project really needs so badly to convert 128-bit "long double" in x64 mode to the text, but since ICC is stuck to MSVC >>*.lib's, it is not possible, due to MSVC's restriction, so I need to down-cast it to 64-bit "double"... Intel C++ compiler allows to use right 'long double' data type when these two options are used: ... /fp:[ name ] ... extended - rounds intermediates in 64-bit (extended) precision ... /Qpc80 - set internal FPU precision to 64-bit significand ... Let me know if you need a Visual Studio project that demonstrates how to do some simple linear algebra processing with 'double' and 'long double' data types. It would be nice if you provide a test case that demonstrates how you do 'long double'-to-'double' cast. Thanks in advance.
0 Kudos
Judith_W_Intel
Employee
292 Views

Even if we were willing to invest the resources to create our own version of the C Runtime Library all the other Microsoft libraries which use it would need to be recompiled to link it in instead of Microsoft's CRT.

 

0 Kudos
SergeyKostrov
Valued Contributor II
292 Views
>>... >>Intel C++ compiler allows to use right 'long double' data type when these two options are used: >>... >>/fp:[ name ] >>... >>extended - rounds intermediates in 64-bit (extended) precision >>... >>/Qpc80 - set internal FPU precision to 64-bit significand >>... I forgot to mention another command line option: /Qlong-double - enable 80-bit 'long double'
0 Kudos
Marián__VooDooMan__M
New Contributor II
292 Views

Judith Ward (Intel) wrote:

Even if we were willing to invest the resources to create our own version of the C Runtime Library all the other Microsoft libraries which use it would need to be recompiled to link it in instead of Microsoft's CRT.

Oh, I see. :-(

0 Kudos
Marián__VooDooMan__M
New Contributor II
292 Views

Sergey Kostrov wrote:

>>...
>>Intel C++ compiler allows to use right 'long double' data type when these two options are used:
>>...
>>/fp:[ name ]
>>...
>>extended - rounds intermediates in 64-bit (extended) precision
>>...
>>/Qpc80 - set internal FPU precision to 64-bit significand
>>...

I forgot to mention another command line option:

/Qlong-double - enable 80-bit 'long double'

You have not read my request carefuly. I was speaking of x64 (thus 'long double' is 128-bit long, which is not compatible with MSVC's stdio, but I still can do calculation in 128-bit mode) and NOT about x86 where is 'long double' indeed 80-bit long and IS compatible with MSVC's stdio.

I am speaking about s/printf/s/scanf("%Lf",<long double>), and so on, and about string streams in C++ as well.

0 Kudos
SergeyKostrov
Valued Contributor II
292 Views
Here is a collection of threads related to applications of long double: Forum topic: Support of 'long double' floating point data type on Intel CPUs ( A collection of threads ) Web-link: software.intel.com/en-us/node/375459 Forum topic: Mathimf and Windows Web-link: software.intel.com/en-us/forums/topic/357759 Forum topic: Support of Extended or Quad IEEE FP formats Web-link: software.intel.com/en-us/forums/topic/358472 Forum topic: Using 'long double' in Parallel Studio? Web-link: software.intel.com/en-us/forums/topic/266290 Forum topic: Why function printf does not support long double? Web-link: software.intel.com/en-us/forums/topic/372720 Forum topic: Mixing of Floating-Point Types ( MFPT ) when performing calculations. Does it improve accuracy? Web-link: software.intel.com/en-us/forums/topic/361134 Take a look as soon as you have time.
0 Kudos
Reply