|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r58220 - in sandbox/numeric_bindings/libs/numeric/bindings/tools: . templates templates/level1 templates/test
From: rutger_at_[hidden]
Date: 2009-12-07 09:45:41
Author: rutger
Date: 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
New Revision: 58220
URL: http://svn.boost.org/trac/boost/changeset/58220
Log:
Included test program generation, some bugfixes
Text files modified:
sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py | 26 +++++++++++++------
sandbox/numeric_bindings/libs/numeric/bindings/tools/documentation.py | 52 ++++++++++++++++++++++++++++++++++++++-
sandbox/numeric_bindings/libs/numeric/bindings/tools/lapack_generator.py | 11 ++++---
sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py | 52 +++++++++++++++++++++++++++++----------
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/blas.hpp | 14 ++++++---
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/blas.qbk | 6 ++++
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.hpp | 16 ++++++------
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.qbk | 3 +
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/copy.hpp | 2
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/scal.hpp | 2
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/swap.hpp | 4 +-
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/test/CMakeLists.txt | 5 ---
sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/test/test_case.cpp | 2
13 files changed, 142 insertions(+), 53 deletions(-)
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/blas_generator.py 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -51,8 +51,12 @@
includes = [
'#include <boost/numeric/bindings/traits/traits.hpp>',
'#include <boost/numeric/bindings/traits/type_traits.hpp>',
+ '#include <boost/numeric/bindings/remove_imaginary.hpp>',
+ '#include <boost/numeric/bindings/is_mutable.hpp>',
+ '#include <boost/numeric/bindings/value.hpp>',
'#include <boost/mpl/bool.hpp>',
'#include <boost/type_traits/is_same.hpp>',
+ '#include <boost/type_traits/remove_const.hpp>',
'#include <boost/static_assert.hpp>' ]
if template_map.has_key( group_name.lower() + '.includes' ):
@@ -171,9 +175,9 @@
arg_A = static_asserts[0]
for arg_B in static_asserts[1:]:
print "Adding static assert for argA", arg_A, " argb", arg_B
- assert_line = 'BOOST_STATIC_ASSERT( (boost::is_same< ' + \
- info_map[ subroutine ][ 'argument_map' ][ arg_A ][ 'code' ][ 'level_1_static_assert' ] + ', ' + \
- info_map[ subroutine ][ 'argument_map' ][ arg_B ][ 'code' ][ 'level_1_static_assert' ] + \
+ assert_line = 'BOOST_STATIC_ASSERT( (is_same< ' + \
+ 'typename remove_const< typename value< ' + info_map[ subroutine ][ 'argument_map' ][ arg_A ][ 'code' ][ 'level_1_static_assert' ] + ' >::type >::type, ' + \
+ 'typename remove_const< typename value< ' + info_map[ subroutine ][ 'argument_map' ][ arg_B ][ 'code' ][ 'level_1_static_assert' ] + ' >::type >::type' \
' >::value) );'
level1_static_assert_list += [ assert_line ]
@@ -218,7 +222,7 @@
", ".join( level2_arg_lists[ level2_idx ] ) )
if len( level2_static_asserts ) > 0:
level2_function = level2_function.replace( "$STATIC_ASSERTS", \
- "\n".join( level2_static_asserts[ level2_idx ] ) )
+ "\n ".join( level2_static_asserts[ level2_idx ] ) )
level2_functions.append( level2_function )
level2_template = "\n".join( level2_functions )
@@ -302,15 +306,15 @@
result = template_map[ 'test_case.cpp' ]
result = result.replace( '$groupname', group_name.lower() )
result = result.replace( '$levelname', level_name.lower() )
+ result = result.replace( '$library', 'blas' )
open( os.path.join( base_dir, filename ), 'wb' ).write( result )
def write_cmakefile( level_properties, template_map, base_dir ):
entries = ''
- for problem_type, problem_properties in level_properties.iteritems():
- if problem_properties.has_key( 'routines_by_value_type' ):
- group = problem_properties[ 'routines_by_value_type' ]
+ if level_properties.has_key( 'routines_by_value_type' ):
+ group = level_properties[ 'routines_by_value_type' ]
for group_name, subroutines in group.iteritems():
sub_result = template_map[ 'CMakeLists.entry' ]
sub_result = sub_result.replace( '$groupname', group_name.lower() )
@@ -338,7 +342,7 @@
cublas_h_path = './cublas.h'
template_src_path = './templates'
bindings_impl_target_path = '../../../../boost/numeric/bindings/blas/'
-test_target_path = '../test/lapack/'
+test_target_path = '../test/blas/'
bindings_doc_target_path = '../doc/blas/'
# Unable to find zdrot in cblas.h and cublas.h
@@ -413,11 +417,17 @@
print "Creating directory " + doc_target_path
os.mkdir( doc_target_path )
+ if not os.path.exists( test_target_path + level ):
+ print "Creating directory " + doc_target_path
+ os.mkdir( test_target_path + level )
+
print level_properties
if level_properties.has_key( 'routines_by_value_type' ):
print "has key..."
write_functions( function_info_map, level_properties[ 'routines_by_value_type' ], templates, impl_target_path )
documentation.write_documentation( function_info_map, level_properties[ 'routines_by_value_type' ], templates, doc_target_path )
+ write_test_case( function_info_map, level_properties[ 'routines_by_value_type' ], templates, test_target_path + level, level )
+ write_cmakefile( level_properties, templates, test_target_path + level )
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/documentation.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/documentation.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/documentation.py 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -41,9 +41,36 @@
}
number_to_text = \
- { 2 : 'two',
+ { 1 : 'one',
+ 2 : 'two',
3 : 'three',
- 4 : 'four'
+ 4 : 'four',
+ 5 : 'five',
+ 6 : 'six',
+ 7 : 'seven',
+ 8 : 'eight',
+ 9 : 'nine',
+ 10: 'ten',
+ 11: 'eleven',
+ 12: 'twelve',
+ 13: 'thirteen',
+ 14: 'fourteen',
+ 15: 'fifteen',
+ 16: 'sixteen',
+ 17: 'seventeen',
+ 18: 'eighteen',
+ 19: 'nineteen',
+ 20: 'twenty',
+ 21: 'twenty-one',
+ 22: 'twenty-two',
+ 23: 'twenty-three',
+ 24: 'twenty-four',
+ 25: 'twenty-five',
+ 26: 'twenty-six',
+ 27: 'twenty-seven',
+ 28: 'twenty-eight',
+ 29: 'twenty-nine',
+ 30: 'thirty',
}
def readable_join( some_tuple, last_word = "and" ):
@@ -163,6 +190,9 @@
prototypes = []
first_typename = None
originating_sources = []
+ no_arguments_level0 = []
+ no_arguments_level2 = []
+
for subroutine in subroutines:
if parsermode == 'blas':
originating_sources.append( "[@http://www.netlib.org/blas/" +
@@ -176,6 +206,13 @@
if info_map[ subroutine ][ 'argument_map' ][ arg ][ 'code' ][ 'level_2' ] != None:
level2_arg_list_pre += [ info_map[ subroutine ][ 'argument_map' ][ arg ][ 'code' ][ 'level_2' ] ]
+ # Keep track of the numbers of arguments
+ if len( info_map[ subroutine ][ 'arguments' ] ) not in no_arguments_level0:
+ no_arguments_level0.append( len( info_map[ subroutine ][ 'arguments' ] ) )
+
+ if len( level2_arg_list_pre ) not in no_arguments_level2:
+ no_arguments_level2.append( len( level2_arg_list_pre ) )
+
level2_arg_list = []
for arg in level2_arg_list_pre:
readable_arg = ''
@@ -221,6 +258,17 @@
result = result.replace( '$SUBROUTINES', readable_join( subroutines ) )
result = result.replace( '$header', 'boost/numeric/bindings/' + parsermode + '/' + group_name.lower() + '.hpp' )
+
+ if len( no_arguments_level0 ) == 1:
+ result = result.replace( '$NO_ARGUMENTS_LEVEL0', number_to_text[ no_arguments_level0[0] ] )
+ else:
+ result = result.replace( '$NO_ARGUMENTS_LEVEL0', "TODO" )
+
+ if len( no_arguments_level2 ) == 1:
+ result = result.replace( '$NO_ARGUMENTS_LEVEL2', number_to_text[ no_arguments_level2[0] ] )
+ else:
+ result = result.replace( '$NO_ARGUMENTS_LEVEL2', "TODO" )
+
if parsermode == 'blas':
result = result.replace( '$DISPATCH_TABLE', write_blas_dispatch_table( subroutines, info_map ) )
result = result.replace( '$FRIENDLY_NAME', blas_friendly_name( group_name, info_map, template_map ) )
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/lapack_generator.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/lapack_generator.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/lapack_generator.py 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -425,6 +425,7 @@
result = template_map[ 'test_case.cpp' ]
result = result.replace( '$groupname', group_name.lower() )
result = result.replace( '$levelname', level_name.lower() )
+ result = result.replace( '$library', 'lapack' )
open( os.path.join( base_dir, filename ), 'wb' ).write( result )
@@ -580,16 +581,16 @@
print "Creating directory " + doc_target_path
os.mkdir( doc_target_path )
- #if not os.path.exists( test_target_path + level ):
- # os.mkdir( test_target_path + level )
+ if not os.path.exists( test_target_path + level ):
+ print "Creating directory " + doc_target_path
+ os.mkdir( test_target_path + level )
for problem_type, problem_properties in level_properties.iteritems():
if problem_properties.has_key( 'routines_by_value_type' ):
write_functions( function_info_map, problem_properties[ 'routines_by_value_type' ], templates, impl_target_path )
documentation.write_documentation( function_info_map, problem_properties[ 'routines_by_value_type' ], templates, doc_target_path )
+ write_test_case( function_info_map, problem_properties[ 'routines_by_value_type' ], templates, test_target_path + level, level )
- #write_test_case( function_info_map, problem_properties[ 'routines_by_value_type' ], templates, test_target_path + level, level )
-
- #write_cmakefile( level_properties, templates, test_target_path + level )
+ write_cmakefile( level_properties, templates, test_target_path + level )
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/netlib.py 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -87,13 +87,13 @@
if properties[ 'type' ] == 'vector' or properties[ 'type' ] == 'matrix':
if properties[ 'value_type' ][ 0:7] == 'COMPLEX' or \
properties[ 'value_type' ] == 'DOUBLE COMPLEX':
- result = 'traits::complex_ptr(' + name.lower() + ')'
+ result = 'detail::complex_ptr(' + name.lower() + ')'
else:
result = name.lower()
elif properties[ 'type' ] == 'scalar':
if properties[ 'value_type' ][ 0:7] == 'COMPLEX' or \
properties[ 'value_type' ] == 'DOUBLE COMPLEX':
- result = 'traits::complex_ptr(&' + name.lower() + ')'
+ result = 'detail::complex_ptr(&' + name.lower() + ')'
else:
result = '&' + name.lower()
@@ -111,26 +111,31 @@
result = "begin_value(" + my_name + ")"
elif properties.has_key( 'trait_type' ):
if properties[ 'trait_type' ] == 'lda':
- result = "traits::leading_dimension(" + properties[ 'trait_of' ].lower() + ")"
+ result = "stride_major(" + properties[ 'trait_of' ].lower() + ")"
+ #result = "traits::leading_dimension(" + properties[ 'trait_of' ].lower() + ")"
if properties[ 'trait_type' ] == 'num_columns':
result = "num_columns(" + properties[ 'trait_of' ].lower() + ")"
if properties[ 'trait_type' ] == 'num_rows':
result = "num_rows(" + properties[ 'trait_of' ].lower() + ")"
if properties[ 'trait_type' ] == 'trans_num_columns':
- result = "(" + properties[ 'trait_of' ][0].lower() + "=='N' ? " + \
- "num_columns(" + properties[ 'trait_of' ][1].lower() + ") : " + \
- "num_rows(" + properties[ 'trait_of' ][1].lower() + "))"
+ result = "size_major(" + properties[ 'trait_of' ][1].lower() + ")"
+ #result = "(" + properties[ 'trait_of' ][0].lower() + "=='N' ? " + \
+ #"num_columns(" + properties[ 'trait_of' ][1].lower() + ") : " + \
+ #"num_rows(" + properties[ 'trait_of' ][1].lower() + "))"
if properties[ 'trait_type' ] == 'size':
my_name = properties[ 'trait_of' ].lower()
referring_to_properties = arg_map[ properties[ 'trait_of' ] ]
if 'workspace' in referring_to_properties[ 'io' ]:
my_name = 'work.select(' + workspace_type( properties[ 'trait_of' ].lower(), referring_to_properties ) + \
'())'
- result = "traits::vector_size(" + my_name + ")"
+ result = "size(" + my_name + ")"
if properties[ 'trait_type' ] == 'uplo':
result = "traits::matrix_uplo_tag(" + properties[ 'trait_of' ].lower() + ")"
if properties[ 'trait_type' ] == 'stride':
- result = "traits::vector_stride(" + properties[ 'trait_of' ].lower() + ")"
+ result = "stride(" + properties[ 'trait_of' ].lower() + ")"
+
+ if properties[ 'trait_type' ] == 'trans':
+ result = "trans_tag()"
else:
result = name.lower()
@@ -170,8 +175,8 @@
if result != None:
if properties[ 'value_type' ] == 'REAL' or properties[ 'value_type' ] == 'DOUBLE PRECISION':
result = result.replace( "real_type", \
- "typename traits::type_traits< typename value" + \
- "< $FIRST_TYPENAME >::type >::real_type" )
+ "typename remove_imaginary< typename value" + \
+ "< $FIRST_TYPENAME >::type >::type" )
if properties[ 'value_type' ][ 0:7] == 'COMPLEX' or \
properties[ 'value_type' ] == 'DOUBLE COMPLEX':
result = result.replace( "value_type", "typename value" + \
@@ -220,8 +225,8 @@
result = None
if 'workspace' not in properties[ 'io' ]:
if properties[ 'type' ] == 'matrix' or properties[ 'type' ] == 'vector':
- #result = level1_typename( name, properties ).replace( "typename ", "" )
- result = "typename value< " + level1_typename( name, properties ).replace( "typename ", "" ) + " >::type"
+ result = level1_typename( name, properties ).replace( "typename ", "" )
+ #result = "typename value< " + level1_typename( name, properties ).replace( "typename ", "" ) + " >::type"
elif properties[ 'type' ] == 'scalar':
result = "TODO HOOK"
#result = "typename value< " + level1_type( name, properties ) + " >::type"
@@ -339,12 +344,12 @@
min_workspace_call = min_workspace_call_type( name, properties, arg_map )
if min_workspace_call == None:
min_workspace_call = '$CALL_MIN_SIZE'
- result = 'BOOST_ASSERT( traits::vector_size(work.select(' + workspace_type( name, properties ) + '())) >= ' + \
+ result = 'BOOST_ASSERT( size(work.select(' + workspace_type( name, properties ) + '())) >= ' + \
'min_size_' + name.lower() + '( ' + min_workspace_call + ' ));'
# assert_size is vector-type specific
elif properties.has_key( 'assert_size' ):
- result = "BOOST_ASSERT( traits::vector_size(" + call_level1_type( name, properties ) + ") >= " + \
+ result = "BOOST_ASSERT( size(" + call_level1_type( name, properties ) + ") >= " + \
expand_nested_list( properties[ 'assert_size' ], arg_map ) + ' );'
return result
@@ -1108,6 +1113,7 @@
# Try to get which variables are valid, to put this in asserts.
#
elif argument_properties[ 'value_type' ] == 'CHARACTER':
+ print "Trying to find assert chars..."
match_statements = re.compile( '=(\s|or|\'[0-9A-Z]\')+[:,]', re.M ).finditer( comment_block )
for statement in match_statements:
print "Statement:",statement.group(0)
@@ -1119,6 +1125,19 @@
if not letter in argument_properties[ 'assert_char' ]:
argument_properties[ 'assert_char' ] += [ letter ]
+ # Try alternative regex, works for e.g. TRANS in some BLAS routines
+ match_statements = re.compile( argument_name + '\s+=(\s|or|\'[0-9A-Z]\')+', re.M ).finditer( comment_block )
+ for statement in match_statements:
+ print "Statement:",statement.group(0)
+ match_letters = re.compile( '\'([0-9A-Z])\'' ).findall( statement.group(0) )
+ for letter in match_letters:
+ print "Letter",letter
+ if not argument_properties.has_key( 'assert_char' ):
+ argument_properties[ 'assert_char' ] = []
+ if not letter in argument_properties[ 'assert_char' ]:
+ argument_properties[ 'assert_char' ] += [ letter ]
+
+ # Uplo character detection
if argument_name == 'UPLO':
# see if the traits are overruled through the template system
traits_key = subroutine_group_name.lower() + '.' + subroutine_value_type + '.' + argument_name + '.trait_of'
@@ -1140,6 +1159,11 @@
argument_properties[ 'trait_type' ] = 'uplo'
argument_properties[ 'trait_of' ] = uplo_trait_of
+ # Transpose character detection
+ if argument_name[0:5] == 'TRANS':
+ argument_properties[ 'trait_type' ] = 'trans'
+ argument_properties[ 'trait_of' ] = 'A'
+
#
# Minimal workspace dimension recognition
#
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/blas.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/blas.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/blas.hpp 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -59,12 +59,14 @@
}
$TEMPLATE[blas_level1]
-// value-type based template
-template< typename ValueType >
+//
+// Value-type based template class
+//
+template< typename Value >
struct $groupname_impl {
- typedef ValueType value_type;
- typedef typename remove_imaginary<ValueType>::type real_type;
+ typedef Value value_type;
+ typedef typename remove_imaginary< Value >::type real_type;
typedef $RETURN_TYPE return_type;
$INCLUDE_TEMPLATES
@@ -77,7 +79,9 @@
}
};
$TEMPLATE[blas_level2]
-// generic template function to call $groupname
+//
+// Generic template function to call $groupname
+//
template< $TYPES >
inline typename $groupname_impl< typename value< $FIRST_TYPENAME >::type >::return_type
$groupname( $LEVEL2 ) {
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/blas.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/blas.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/blas.qbk 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -22,6 +22,12 @@
$DISPATCH_TABLE
]
+The original routines $SUBROUTINES have $NO_ARGUMENTS_LEVEL0 arguments,
+whereas `$groupname` requires $NO_ARGUMENTS_LEVEL2 arguments.
+
+[table Deduction of arguments of $groupname.
+]
+
[heading Definition]
Defined in header [headerref $header].
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.hpp 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -62,22 +62,22 @@
#endif
$TEMPLATE[level1_pre_header]
// value-type based template
-template< typename ValueType, typename Enable = void >
+template< typename Value, typename Enable = void >
struct $groupname_impl{};
$TEMPLATE[level1_header1]
// value-type based template
-template< typename ValueType >
+template< typename Value >
struct $groupname_impl {
$TEMPLATE[level1_header2]
// $SPECIALIZATION specialization
-template< typename ValueType >
-struct $groupname_impl< ValueType, typename boost::enable_if< traits::is_$SPECIALIZATION<ValueType> >::type > {
+template< typename Value >
+struct $groupname_impl< Value, typename boost::enable_if< traits::is_$SPECIALIZATION<Value> >::type > {
$TEMPLATE[level1_workspace]
- typedef ValueType value_type;
- typedef typename traits::type_traits<ValueType>::real_type real_type;
+ typedef Value value_type;
+ typedef typename traits::type_traits<Value>::real_type real_type;
$INCLUDE_TEMPLATES
// user-defined workspace specialization
@@ -142,8 +142,8 @@
}
$TEMPLATE[level1_noworkspace]
- typedef ValueType value_type;
- typedef typename traits::type_traits<ValueType>::real_type real_type;
+ typedef Value value_type;
+ typedef typename traits::type_traits<Value>::real_type real_type;
$INCLUDE_TEMPLATES
// templated specialization
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.qbk
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.qbk (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/lapack.qbk 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -16,7 +16,8 @@
and is determined by the type of values contained in type `$FIRST_TYPENAME`.
The type of values is obtained through the `value` meta-function
`typename value<$FIRST_TYPENAME>::type`.
-Table X below illustrates to which specific routine this dispatching will take place.
+The dispatching table below illustrates to which specific routine
+the code path will be generated.
[table Dispatching of $groupname
$DISPATCH_TABLE
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/copy.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/copy.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/copy.hpp 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -8,5 +8,5 @@
INCY (input) INTEGER
The increment of Y
X (input) DATATYPE array of length (N)
- Y (input) DATATYPE array of length (N)
+ Y (output) DATATYPE array of length (N)
$TEMPLATE[end]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/scal.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/scal.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/scal.hpp 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -5,7 +5,7 @@
The length of array X
INCX (input) INTEGER
The increment of X
- X (input) DATATYPE array of length (N)
+ X (input/output) DATATYPE array of length (N)
A (input) DATATYPE
$TEMPLATE[scal.all.cblas_alias]
A,ALPHA
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/swap.hpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/swap.hpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/level1/swap.hpp 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -7,6 +7,6 @@
The increment of X
INCY (input) INTEGER
The increment of Y
- X (output) DATATYPE
- Y (output) DATATYPE
+ X (input/output) DATATYPE
+ Y (input/output) DATATYPE
$TEMPLATE[end]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/test/CMakeLists.txt
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/test/CMakeLists.txt (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/test/CMakeLists.txt 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -10,11 +10,6 @@
# PLEASE DO NOT EDIT!
#
-enable_language( Fortran )
-find_package( LAPACK REQUIRED )
-
-#include_directories( . )
-
$ENTRIES
$TEMPLATE[CMakeLists.entry]
Modified: sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/test/test_case.cpp
==============================================================================
--- sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/test/test_case.cpp (original)
+++ sandbox/numeric_bindings/libs/numeric/bindings/tools/templates/test/test_case.cpp 2009-12-07 09:45:39 EST (Mon, 07 Dec 2009)
@@ -13,7 +13,7 @@
//
#include <cstdlib>
-#include <boost/numeric/bindings/lapack/$levelname/$groupname.hpp>
+#include <boost/numeric/bindings/$library/$levelname/$groupname.hpp>
int main(int argc, char *argv[]) {
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk