Forwarded message:
>From matthias@serval.ica1.uni-stuttgart.de Tue Apr 14 13:17:49 1998
Date: Tue, 14 Apr 1998 18:57:05 +0200 (MET DST)
Message-Id: <199804141657.SAA25530@serval.ica1.uni-stuttgart.de>
From: Matthias Mueller <matthias@ica1.uni-stuttgart.de>
To: tveldhui@oonumerics.org
Subject: BLITZ: New release: Blitz++ 0.2-alpha-06
In-Reply-To: <199804130116.VAA18224@oonumerics.org>
References: <199804130116.VAA18224@oonumerics.org>
Hi Todd,
I just had a look at the new Blitz++ release. A few weeks ago we got a
new compiler for our DEC alpha workstations (DEC cxx 6.10). It is
really a major step ahead (compared to cxx 5.x). Because it worked
fine with blitz-0.2-alpha-04-dev-971216 I tried to make a contribution
to your project.
The output of bzconfig looks quite convincing (see below) but there
are lot of error messages building the library and the checks.
However they seem to be mainly two problems:
1. A missing <cmath> ( I don't consider this a real problem)
2. Error messages concerning enums like this:
cxx -I./.. -c ./globals.cpp
cxx: Error: ./../blitz/vecexprwrap.h, line 75: expression must have arithmetic or enum type
enum { _bz_staticLengthCount = (int)P_expr::_bz_staticLengthCount,
----------------------------------------^
Do you think we should try to make cxx work again with blitz
0.2-alpha-06?
Matthias
P.S.:
> - unfortunately, Cray C++ support broken by requiring <string>; this can
> be fixed if anyone really wants it.
Well, although I have access to KAI C++ on a Cray it would be nice to
have a second compiler available. Even KCC has bugs. Maybe I can
convince Cray people here to organize a newer Cray compiler ( they
seem to buy EDG and Modena stuff so they should get closer to the
standard).
O.K. here the output of bzconfig. Note that we can switch on the
standard IO library with a define:
Does your compiler implement namespaces?
cxx ./namespac.cpp
Success: BZ_NAMESPACES
What about exceptions?
cxx ./except.cpp
Success: BZ_EXCEPTIONS
Run-Time Type Identification?
cxx ./rtti.cpp
Success: BZ_RTTI
Member constants?
cxx ./membcnst.cpp
Success: BZ_MEMBER_CONSTANTS
Does your compiler cling to the old 'for' scoping rules?
cxx ./oldfor.cpp
cxx: Error: bzjunk.cpp, line 12: identifier "i" is undefined
z = i;
--------^
1 error detected in the compilation of "bzjunk.cpp".
Failed: BZ_OLD_FOR_SCOPING
How about the 'explicit' keyword?
cxx ./explicit.cpp
Success: BZ_EXPLICIT
What about the 'mutable' keyword?
cxx ./mutable.cpp
Success: BZ_MUTABLE
Does your compiler recognize 'typename'?
cxx ./typename.cpp
Success: BZ_TYPENAME
Just on the off chance... the NCEG 'restrict' keyword?
cxx ./restrict.cpp
cxx: Error: bzjunk.cpp, line 6: expected a ")"
void add(int length, double * restrict a, const double * restrict b,
---------------------------------------^
cxx: Error: bzjunk.cpp, line 10: identifier "a" is undefined
a[i] = b[i] + c[i];
--------^
cxx: Error: bzjunk.cpp, line 10: identifier "b" is undefined
a[i] = b[i] + c[i];
---------------^
cxx: Error: bzjunk.cpp, line 10: identifier "c" is undefined
a[i] = b[i] + c[i];
----------------------^
cxx: Error: bzjunk.cpp, line 23: too many arguments in function call
add(10,a,b,c);
-------------^
5 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_NCEG_RESTRICT
Does it recognize bool as a built-in type?
cxx ./bool.cpp
Success: BZ_BOOL
What about const_cast<>?
cxx ./constcst.cpp
Success: BZ_CONST_CAST
static_cast<>?
cxx ./statcast.cpp
Success: BZ_STATIC_CAST
reinterpret_cast<>?
cxx ./reinterp.cpp
Success: BZ_REINTERPRET_CAST
dynamic_cast<>?
cxx ./dynamic.cpp
Success: BZ_DYNAMIC_CAST
Will it handle basic templates? (If not, just give up now.)
cxx ./template.cpp
Success: BZ_TEMPLATES
Partial specialization?
cxx ./partial.cpp
Success: BZ_PARTIAL_SPECIALIZATION
Partial ordering?
cxx ./porder.cpp
Success: BZ_PARTIAL_ORDERING
Default template parameters?
cxx ./default.cpp
Success: BZ_DEFAULT_TEMPLATE_PARAMETERS
Member templates?
cxx ./membtmpl.cpp
Success: BZ_MEMBER_TEMPLATES
Member templates outside the class declaration?
cxx ./membtmp2.cpp
Success: BZ_MEMBER_TEMPLATES_OUTSIDE_CLASS
Does it recognize the full specialization syntax?
cxx ./fullspec.cpp
Success: BZ_FULL_SPECIALIZATION_SYNTAX
Function templates with non-type parameters?
cxx ./nontype.cpp
Success: BZ_FUNCTION_NONTYPE_PARAMETERS
Template-qualified base class specifiers?
cxx ./elabbase.cpp
Success: BZ_TEMPLATE_QUALIFIED_BASE_CLASS
Template-qualified return types (necessary for vector type promotion)?
cxx ./elabret.cpp
Success: BZ_TEMPLATE_QUALIFIED_RETURN_TYPE
Explicit template function qualification?
cxx ./tempqual.cpp
cxx: Error: bzjunk.cpp, line 11: template parameter "X" is not used in declaring the parameter types of function template "to"
template<class X, class Y>
---------------^
cxx: Error: bzjunk.cpp, line 20: explicit function template argument lists are not supported yet in expression
contexts
Vector<double> y = to<double>(x);
-----------------------^
2 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_EXPLICIT_TEMPLATE_FUNCTION_QUALIFICATION
Templates as template arguments?
cxx ./temptemp.cpp
cxx: Error: bzjunk.cpp, line 10: "template" is not allowed
template<class X, template<class Y> class T_alloc>
------------------^
cxx: Error: bzjunk.cpp, line 16: T_alloc is not a template
T_alloc<X> alloc_;
---^
cxx: Error: bzjunk.cpp, line 21: argument list for class template "allocator" is missing
foo<double, allocator> x;
----------------^
cxx: Error: bzjunk.cpp, line 16: T_alloc is not a template
detected during instantiation of class "foo<double, <error-type>>" at line 21
T_alloc<X> alloc_;
---^
4 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_TEMPLATES_AS_TEMPLATE_ARGUMENTS
Use of the template keyword as a qualifier?
cxx ./tempkey.cpp
cxx: Error: bzjunk.cpp, line 7: template parameter "T" is not used in declaring the parameter types of function template "Foo::convert"
template<class T> static T convert() { return T(); }
-------------------^
cxx: Error: bzjunk.cpp, line 12: expected an identifier
double z = Foo::template convert<double>();
--------------------^
cxx: Error: bzjunk.cpp, line 12: expected a ";"
double z = Foo::template convert<double>();
--------------------^
3 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_TEMPLATE_KEYWORD_QUALIFIER
Function matching with argument types which are template scope-qualified?
cxx ./tempqmt.cpp
cxx: Error: bzjunk.cpp, line 25: no operator "+" matches these operands
operand types are: B<A<float>> + float
z + 0.5f; // match +(B<A<float>>, A<float>::W)
------^
1 error detected in the compilation of "bzjunk.cpp".
Failed: BZ_TEMPLATE_SCOPED_ARGUMENT_MATCHING
Will it support the vector type promotion mechanism?
cxx ./promote.cpp
Success: BZ_TYPE_PROMOTION
Numeric traits promotions (sum type, etc.)?
cxx ./numtrait.cpp
Success: BZ_USE_NUMTRAIT
Does it have complex<T>?
cxx ./complex.cpp
Success: BZ_HAVE_COMPLEX
Does it have numeric_limits<T>?
cxx ./numlimit.cpp
Success: BZ_HAVE_NUMERIC_LIMITS
Does it have valarray<T>?
cxx ./valarray.cpp
Success: BZ_HAVE_VALARRAY
Complex math functions?
cxx ./compmath.cpp
cxx: Error: bzjunk.cpp, line 13: no suitable conversion function from "std::complex<double>" to "double" exists
acos(x);
---------^
cxx: Error: bzjunk.cpp, line 14: no suitable conversion function from "std::complex<double>" to "double" exists
asin(x);
---------^
cxx: Error: bzjunk.cpp, line 15: no suitable conversion function from "std::complex<double>" to "double" exists
atan(x);
---------^
cxx: Error: bzjunk.cpp, line 16: no suitable conversion function from "std::complex<double>" to "double" exists
atan2(x,y);
----------^
cxx: Error: bzjunk.cpp, line 16: no suitable conversion function from "std::complex<double>" to "double" exists
atan2(x,y);
------------^
cxx: Error: bzjunk.cpp, line 17: no suitable conversion function from "std::complex<double>" to "double" exists
atan2(x, double(3.0));
----------^
cxx: Error: bzjunk.cpp, line 18: no suitable conversion function from "std::complex<double>" to "double" exists
atan2(double(3.0), x);
-----------------------^
7 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_HAVE_COMPLEX_MATH
IEEE Math library?
cxx ./ieeemath.cpp
cxx: Error: bzjunk.cpp, line 26: identifier "finite" is undefined
finite(x);
----^
cxx: Error: bzjunk.cpp, line 34: identifier "trunc" is undefined
trunc(x);
----^
2 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_HAVE_IEEE_MATH
System V Math library?
cxx ./sysvmath.cpp
cxx: Error: bzjunk.cpp, line 20: identifier "_class" is undefined
_class(x);
----^
cxx: Error: bzjunk.cpp, line 22: identifier "itrunc" is undefined
itrunc(x);
----^
cxx: Error: bzjunk.cpp, line 23: identifier "nearest" is undefined
nearest(x);
----^
cxx: Error: bzjunk.cpp, line 24: identifier "rsqrt" is undefined
rsqrt(x);
----^
cxx: Error: bzjunk.cpp, line 25: identifier "uitrunc" is undefined
uitrunc(x);
----^
5 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_HAVE_SYSTEM_V_MATH
ISO C++ Standard library?
cxx ./std.cpp
cxx: Error: /usr/include/cxx/iostream, line 62: #error directive: "cannot include iostream -- use -D__USE_STD_IOSTREAM to override default"
#error "cannot include iostream -- use -D__USE_STD_IOSTREAM to override default"
-^
cxx: Error: /usr/include/cxx/iomanip, line 62: #error directive: "cannot include iomanip -- use -D__USE_STD_IOSTREAM to override default"
#error "cannot include iomanip -- use -D__USE_STD_IOSTREAM to override default"
-^
2 errors detected in the compilation of "bzjunk.cpp".
Failed: BZ_HAVE_STD
What about getrusage()?
cxx ./getruse.cpp
Success: BZ_HAVE_RUSAGE
Can your compiler handle computations inside an enum?
cxx ./enumcomp.cpp
Success: BZ_ENUM_COMPUTATIONS
+-----------------------------------------------------------------------+
| Matthias Mueller matthias@ica1.uni-stuttgart.de |
| http://www.ica1.uni-stuttgart.de/~matthias |
+-----------------------------------------------------------------------+
| ICA 1, Pfaffenwaldring 27, D-70569 Stuttgart (Germany) |
| Tel. 49-(0)711/685-7606, Fax. 49-(0)711/685-3658 |
+-----------------------------------------------------------------------+
This archive was generated by hypermail 2b29 : Wed Feb 20 2002 - 04:30:04 EST