- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I've run into what I believe to be a bug in Intel's standard C++ library implementation under linux-Intel64. I'd like to know if this is the case, or if I'm doing something incorrectly. I've managed to distill the problem into a short C++ source file (see below).
The attached program outputs the following on GCC and Intel:
> g++ test.cpp -o test.gcc
> icpc test.cpp -o test.icc
> ./test.gcc
(1,-1)
(2,-2)
(3,-3)
(4,-4)
> ./test.icc
(2.07468e-317,2.33291e-310)
(2.07468e-317,2.33291e-310)
(2.07468e-317,2.33291e-310)
(2.07468e-317,2.33291e-310)
The GCC results are what I would expect to get, the Intel results are completely wrong.
> icpc -v
Version 11.1
> cat test.cpp
#include
#include
#include
#include
#include
int main( int argc, char* argv[] ) {
typedef std::complex< double > Complex;
std::vector< Complex > v;
v.push_back( Complex( 1, 1 ) );
v.push_back( Complex( 2, 2 ) );
v.push_back( Complex( 3, 3 ) );
v.push_back( Complex( 4, 4 ) );
std::transform( v.begin(), v.end(), v.begin(), std::conj< double > );
std::copy( v.begin(), v.end(),
std::ostream_iterator< Complex >( std::cout, "\\n" ) );
return 0;
}
Please advise.
Thanks.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
[bash]~/LANG> icpc -V cmplx.C Intel C++ Intel 64 Compiler Professional for applications running on Intel 64, Version 11.1 Build 20100203 Package ID: l_cproc_p_11.1.069 Copyright (C) 1985-2010 Intel Corporation. All rights reserved. FOR NON-COMMERCIAL USE ONLY Edison Design Group C/C++ Front End, version 3.10.1 (Feb 3 2010 19:19:06) Copyright 1988-2007 Edison Design Group, Inc. GNU ld (GNU Binutils; devel:gcc / openSUSE_11.1) 2.20.0.20100122-33 $ ./a.out (4,4) (4,4) (4,4) (4,4) [/bash]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It's not a problem in the standard library since Intel uses whatever library is on your system.
It looks like a compiler bug that is sensitive to inline level, i.e.:
sptxl8-23> icpc -inline-level=1 t.cpp && a.out
(1,-1)
(2,-2)
(3,-3)
(4,-4)
sptxl8-24> icpc -inline-level=2 t.cpp && a.out
(1.1267e-266,2.67007e-307)
(1.1267e-266,2.67007e-307)
(1.1267e-266,2.67007e-307)
(1.1267e-266,2.67007e-307)
I will make sure someoneenters this in our bug database.
It stillexists in our development compiler.
And thanks for the example.
Judy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
this issue has been fixed and the fix is in the Intel C++ Composer XE update 2.
Please download it from the Registration Center.
Thanks,
Jennifer

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page