Boost logo

Boost :

Subject: Re: [boost] [integer][math]Heads up on revised gcd/lcm code
From: Edward Diener (eldiener_at_[hidden])
Date: 2017-04-25 21:28:55


On 04/25/2017 03:22 AM, John Maddock via Boost wrote:
>
>
> On 24/04/2017 20:03, Edward Diener via Boost wrote:
>> On 4/24/2017 1:37 PM, John Maddock via Boost wrote:
>>> First some history....
>>>
>>> Some time ago, the old gcd/lcm code was moved from Boost.Math to
>>> Boost.Integer as a means of reducing inter-library dependencies.
>>> Unfortunately a number of tasks were never completed: the docs
>>> weren't added to Boost.Integer, and the Boost.Math code never got
>>> updated to redirect to the moved headers. Fast forward a couple of
>>> years and when Jeremy Murphy contributed a new version of the gcd/lcm
>>> code as part of supporting polynomial gcd, and since I'd completely
>>> forgotten about the move, this got integrated into Boost.Math leaving
>>> us with two divergent versions.
>>>
>>> As part of sorting this mess out, I've now pushed to Boost.Integer a
>>> "best of both" version of this code, so far as I can tell, all
>>> dependent libraries are unaffected by the change, though I do need to
>>> do some more work on supporting obsolete compilers I no longer have
>>> access to.
>>
>> To which obsolete compilers are you referring ?
>
> Primarily VC7.1, 8, 9. Also Sun+STLPort (which I do have access to, but
> I haven't fired up that virtual machine yet).

I have tested sun 12.2 through 12.5 with stlport and running the integer
lasts from the latest 'develop'. My user-config.jam entry for each
version has:

     <cxxflags>-std=sun03
     <cxxflags>-library=stlport4
     <linkflags>-std=sun03
     <linkflags>-library=stlport4
     <cxxflags>-features=tmplife
     <cxxflags>-features=tmplrefstatic ;

I get, starting from the latest:

12.5

sun.compile.c++
/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.5stlport/debug/address-model-32/common_factor_test.o

"../../../boost/rational.hpp", line 141: Error: The type
"boost::STATIC_ASSERTION_FAILURE<0>" is incomplete.

"common_factor_test.cpp", line 327: Where: While specializing
"boost::rational<my_wrapped_integer<int, 1>>".

"common_factor_test.cpp", line 327: Where: Specialized in
non-template code.

1 Error(s) detected.

     "/opt/oracle/developerstudio12.5/bin/CC" +d -std=sun03
-library=stlport4 -features=tmplife -features=tmplrefstatic -g
-erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -I"../../.." -c -o
"/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.5stlport/debug/address-model-32/common_factor_test.o"
"common_factor_test.cpp"

...failed sun.compile.c++
/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.5stlport/debug/address-model-32/common_factor_test.o...

12.4

sun.compile.c++
/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.4stlport/debug/address-model-32/common_factor_test.o

"../../../boost/integer/common_factor_rt.hpp", line 110: Warning:
Identifier expected instead of "}".

"../../../boost/throw_exception.hpp", line 64: Error: No direct
declarator preceding "inline".

"../../../boost/throw_exception.hpp", line 64: Error: "inline" is not
allowed here.

"../../../boost/throw_exception.hpp", line 64: Error: E is not defined.

"../../../boost/throw_exception.hpp", line 64: Error: ")" expected
instead of "const".

"../../../boost/throw_exception.hpp", line 64: Error: In this
declaration "boost::throw_exception" is of an incomplete type "void".

"../../../boost/throw_exception.hpp", line 64: Error: "," expected
instead of "const".

"../../../boost/throw_exception.hpp", line 71: Error: A declaration was
expected instead of "throw".

"../../../boost/throw_exception.hpp", line 71: Error: Type name expected
instead of "enable_error_info".

"../../../boost/throw_exception.hpp", line 71: Error: Unexpected ")" --
Check for matching parenthesis.

"../../../boost/throw_exception.hpp", line 71: Error: Operand expected
instead of ";".

"../../../boost/throw_exception.hpp", line 85: Error: No direct
declarator preceding "void".

"../../../boost/throw_exception.hpp", line 86: Error: E is not defined.

"../../../boost/throw_exception.hpp", line 86: Error: ")" expected
instead of "const".

"../../../boost/throw_exception.hpp", line 86: Error: In this
declaration "boost::exception_detail::throw_exception_" is of an
incomplete type "void".

"../../../boost/throw_exception.hpp", line 86: Error: "," expected
instead of "const".

"../../../boost/throw_exception.hpp", line 86: Error: Use ";" to
terminate declarations.

"../../../boost/throw_exception.hpp", line 86: Error: A declaration was
expected instead of ",".

"../../../boost/throw_exception.hpp", line 86: Error: Use ";" to
terminate declarations.

"../../../boost/throw_exception.hpp", line 86: Error: Use ";" to
terminate declarations.

"../../../boost/throw_exception.hpp", line 86: Error: "," expected
instead of ")".

"../../../boost/throw_exception.hpp", line 99: Error: A declaration was
expected instead of "}".

"../../../boost/multiprecision/cpp_int/checked.hpp", line 18: Error: The
type "void" is incomplete.

"../../../boost/multiprecision/cpp_int/checked.hpp", line 26: Error: The
type "void" is incomplete.

"../../../boost/multiprecision/cpp_int.hpp", line 151: Error: The type
"void" is incomplete.

"../../../boost/multiprecision/cpp_int/misc.hpp", line 46: Error: The
type "void" is incomplete.

Compilation aborted, too many Error messages.

     "/opt/oracle/solarisstudio12.4/bin/CC" +d -std=sun03
-library=stlport4 -features=tmplife -features=tmplrefstatic -g
-erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -I"../../.." -c -o
"/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.4stlport/debug/address-model-32/common_factor_test.o"
"common_factor_test.cpp"

...failed sun.compile.c++
/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.4stlport/debug/address-model-32/common_factor_test.o...

12.3

sun.compile.c++
/home/fceldiener/build/boost/bin.v2/libs/integer/test/fail_uint_65.test/sun-12.3stlport/debug/address-model-32/fail_uint_65.o
CC: Warning: Option -std=sun03 passed to ld, if ld is invoked, ignored
otherwise

     "/opt/oracle/solarisstudio12.3/bin/CC" +d -std=sun03
-library=stlport4 -features=tmplife -features=tmplrefstatic -g
-erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -I"../../.." -c -o
"/home/fceldiener/build/boost/bin.v2/libs/integer/test/fail_uint_65.test/sun-12.3stlport/debug/address-model-32/fail_uint_65.o"
"fail_uint_65.cpp"

...failed sun.compile.c++
/home/fceldiener/build/boost/bin.v2/libs/integer/test/fail_uint_65.test/sun-12.3stlport/debug/address-model-32/fail_uint_65.o...
...removing
/home/fceldiener/build/boost/bin.v2/libs/integer/test/fail_uint_65.test/sun-12.3stlport/debug/address-model-32/fail_uint_65.o
sun.compile.c++
/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.3stlport/debug/address-model-32/common_factor_test.o
CC: Warning: Option -std=sun03 passed to ld, if ld is invoked, ignored
otherwise
"../../../boost/integer/common_factor_rt.hpp", line 110: Warning:
Identifier expected instead of "}".
"../../../boost/integer/common_factor_rt.hpp", line 101: Error:
Overloading ambiguity between "built-in
operator<(int::my_wrapped_integer<int, 1>::*,
int::my_wrapped_integer<int, 1>::*)" and "::my_wrapped_integer<int,
1>::operator<(const::my_wrapped_integer<int, 1>&) const".
"../../../boost/integer/common_factor_rt.hpp", line 459: Where:
While instantiating "static
boost::integer::gcd_detail::gcd_traits_abs_defaults<::my_wrapped_integer<int,
1>, 0>::abs(const::my_wrapped_integer<int, 1>&)".
"../../../boost/integer/common_factor_rt.hpp", line 459: Where:
Instantiated from non-template code.
1 Error(s) and 1 Warning(s) detected.

     "/opt/oracle/solarisstudio12.3/bin/CC" +d -std=sun03
-library=stlport4 -features=tmplife -features=tmplrefstatic -g
-erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -I"../../.." -c -o
"/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.3stlport/debug/address-model-32/common_factor_test.o"
"common_factor_test.cpp"

...failed sun.compile.c++
/home/fceldiener/build/boost/bin.v2/libs/integer/test/common_factor_test.test/sun-12.3stlport/debug/address-model-32/common_factor_test.o...

12.2

../../../boost/cstdint.hpp", line 381: Error: uintptr_t is not defined.

appears for each test.

I did not try 64-bit tests. Should I try with a higher -std=c++11 level
with stlport ? I have separate jam entries which test each version
without the stlport library but with c++03 or c++11 as the standard.

>
> All have tentative fixes in place which I think will fix things, but I'm
> waiting on the tests to cycle.
>
> John.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk