Boost logo

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