linbox-team / linbox

LinBox - C++ library for exact, high-performance linear algebra
https://linbox-team.github.io/linbox
GNU Lesser General Public License v2.1
83 stars 28 forks source link

Only register uint128_t as a TypeName when it's available. #292

Closed d-torrance closed 2 years ago

d-torrance commented 2 years ago

Otherwise, test-fft will fail when it isn't. For example, in a test build of a draft of the Debian package on i386:

test-fft.C:58:20: error: 'uint128_t' was not declared in this scope; did you mean 'uint8_t'?
   58 | REGISTER_TYPE_NAME(uint128_t);
      |                    ^~~~~~~~~
test-fft.C:51:37: note: in definition of macro 'REGISTER_TYPE_NAME'
   51 |     template<> const char *TypeName<type>(){return #type;}
      |                                     ^~~~
test-fft.C:51:28: error: template-id 'TypeName<<expression error> >' for 'const char* TypeName()' does not match any template declaration
   51 |     template<> const char *TypeName<type>(){return #type;}
      |                            ^~~~~~~~~~~~~~
test-fft.C:58:1: note: in expansion of macro 'REGISTER_TYPE_NAME'
   58 | REGISTER_TYPE_NAME(uint128_t);
      | ^~~~~~~~~~~~~~~~~~
test-fft.C:48:52: note: candidates are: 'template<template<class ...> class<template-parameter-1-1> > const char* TypeName()'
   48 | template<template <typename...> class> const char *TypeName();
      |                                                    ^~~~~~~~
test-fft.C:47:35: note:                 'template<class ...> const char* TypeName()'
   47 | template<typename...> const char *TypeName();
      |                                   ^~~~~~~~
make[5]: *** [Makefile:2586: test-fft.o] Error 1
cyrilbouvier commented 2 years ago

There are similar issues in benchmarks. I will fix them