This commit was manufactured by cvs2svn to create tag
'release_0_2_0'.
diff --git a/scipy_distutils/__init__.py b/scipy_distutils/__init__.py
deleted file mode 100644
index b919cf7..0000000
--- a/scipy_distutils/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-"""scipy_distutils
-
-   Modified version of distutils to handle fortran source code, f2py,
-   and other issues in the scipy build process.
-"""
-
-# Need to do something here to get distutils subsumed...
diff --git a/scipy_distutils/__version__.py b/scipy_distutils/__version__.py
deleted file mode 100644
index 6ea9991..0000000
--- a/scipy_distutils/__version__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file is automatically updated with get_version
-# function from scipy_distutils.misc_utils.py
-version = '0.1.19-alpha-47'
-version_info = (0, 1, 19, 'alpha', 47)
diff --git a/scipy_distutils/command/__init__.py b/scipy_distutils/command/__init__.py
deleted file mode 100644
index 4aa39a8..0000000
--- a/scipy_distutils/command/__init__.py
+++ /dev/null
@@ -1,29 +0,0 @@
-"""distutils.command
-
-Package containing implementation of all the standard Distutils
-commands."""
-
-__revision__ = "$Id$"
-
-distutils_all = [  'build_py',
-                   'build_scripts',
-                   'clean',
-                   'install_lib',
-                   'install_scripts',
-                   'bdist',
-                   'bdist_dumb',
-                   'bdist_rpm',
-                   'bdist_wininst',
-                ]
-
-__import__('distutils.command',globals(),locals(),distutils_all)
-
-__all__ = ['build',
-           'build_ext',
-           'build_clib',
-           'build_flib',
-           'install',
-           'install_data',
-           'install_headers',
-           'sdist',
-          ] + distutils_all
diff --git a/scipy_distutils/command/build.py b/scipy_distutils/command/build.py
deleted file mode 100644
index 8d9835f..0000000
--- a/scipy_distutils/command/build.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Need to override the build command to include building of fortran libraries
-# This class must be used as the entry for the build key in the cmdclass
-#    dictionary which is given to the setup command.
-
-from distutils.command.build import *
-from distutils.command.build import build as old_build
-
-class build(old_build):
-    def has_f_libraries(self):
-        return self.distribution.has_f_libraries()
-
-    sub_commands = [('build_py',      old_build.has_pure_modules),
-                    ('build_clib',    old_build.has_c_libraries),
-                    ('build_flib',    has_f_libraries), # new feature
-                    ('build_ext',     old_build.has_ext_modules),
-                    ('build_scripts', old_build.has_scripts),
-                   ]
diff --git a/scipy_distutils/command/build_clib.py b/scipy_distutils/command/build_clib.py
deleted file mode 100644
index f3609e8..0000000
--- a/scipy_distutils/command/build_clib.py
+++ /dev/null
@@ -1,256 +0,0 @@
-"""distutils.command.build_clib
-
-Implements the Distutils 'build_clib' command, to build a C/C++ library
-that is included in the module distribution and needed by an extension
-module."""
-
-# created (an empty husk) 1999/12/18, Greg Ward
-# fleshed out 2000/02/03-04
-
-__revision__ = "$Id$"
-
-
-# XXX this module has *lots* of code ripped-off quite transparently from
-# build_ext.py -- not surprisingly really, as the work required to build
-# a static library from a collection of C source files is not really all
-# that different from what's required to build a shared object file from
-# a collection of C source files.  Nevertheless, I haven't done the
-# necessary refactoring to account for the overlap in code between the
-# two modules, mainly because a number of subtle details changed in the
-# cut 'n paste.  Sigh.
-
-import os, string
-from glob import glob
-from types import *
-from distutils.core import Command
-from distutils.errors import *
-from distutils.sysconfig import customize_compiler
-
-
-def show_compilers ():
-    from distutils.ccompiler import show_compilers
-    show_compilers()
-
-def get_headers(directory_list):
-    # get *.h files from list of directories
-    headers = []
-    for dir in directory_list:
-        head = glob(os.path.join(dir,"*.h"))
-        headers.extend(head)
-
-    return headers
-
-def get_directories(list_of_sources):
-    # get unique directories from list of sources.
-    direcs = []
-    for file in list_of_sources:
-        dir = os.path.split(file)
-        if dir[0] != '' and not dir[0] in direcs:
-            direcs.append(dir[0])
-
-    return direcs
-
-
-class build_clib (Command):
-
-    description = "build C/C++ libraries used by Python extensions"
-
-    user_options = [
-        ('build-clib', 'b',
-         "directory to build C/C++ libraries to"),
-        ('build-temp', 't',
-         "directory to put temporary build by-products"),
-        ('debug', 'g',
-         "compile with debugging information"),
-        ('force', 'f',
-         "forcibly build everything (ignore file timestamps)"),
-        ('compiler=', 'c',
-         "specify the compiler type"),
-        ]
-
-    boolean_options = ['debug', 'force']
-
-    help_options = [
-        ('help-compiler', None,
-         "list available compilers", show_compilers),
-        ]
-
-    def initialize_options (self):
-        self.build_clib = None
-        self.build_temp = None
-
-        # List of libraries to build
-        self.libraries = None
-
-        # Compilation options for all libraries
-        self.include_dirs = None
-        self.define = None
-        self.undef = None
-        self.debug = None
-        self.force = 0
-        self.compiler = None
-
-    # initialize_options()
-
-
-    def finalize_options (self):
-
-        # This might be confusing: both build-clib and build-temp default
-        # to build-temp as defined by the "build" command.  This is because
-        # I think that C libraries are really just temporary build
-        # by-products, at least from the point of view of building Python
-        # extensions -- but I want to keep my options open.
-        self.set_undefined_options('build',
-                                   ('build_temp', 'build_clib'),
-                                   ('build_temp', 'build_temp'),
-                                   ('compiler', 'compiler'),
-                                   ('debug', 'debug'),
-                                   ('force', 'force'))
-
-        self.libraries = self.distribution.libraries
-        if self.libraries:
-            self.check_library_list(self.libraries)
-
-        if self.include_dirs is None:
-            self.include_dirs = self.distribution.include_dirs or []
-        if type(self.include_dirs) is StringType:
-            self.include_dirs = string.split(self.include_dirs,
-                                             os.pathsep)
-
-        # XXX same as for build_ext -- what about 'self.define' and
-        # 'self.undef' ?
-
-    # finalize_options()
-
-
-    def run (self):
-
-        if not self.libraries:
-            return
-
-        # Yech -- this is cut 'n pasted from build_ext.py!
-        from distutils.ccompiler import new_compiler
-        self.compiler = new_compiler(compiler=self.compiler,
-                                     verbose=self.verbose,
-                                     dry_run=self.dry_run,
-                                     force=self.force)
-        customize_compiler(self.compiler)
-
-        if self.include_dirs is not None:
-            self.compiler.set_include_dirs(self.include_dirs)
-        if self.define is not None:
-            # 'define' option is a list of (name,value) tuples
-            for (name,value) in self.define:
-                self.compiler.define_macro(name, value)
-        if self.undef is not None:
-            for macro in self.undef:
-                self.compiler.undefine_macro(macro)
-
-        self.build_libraries(self.libraries)
-
-    # run()
-
-
-    def check_library_list (self, libraries):
-        """Ensure that the list of libraries (presumably provided as a
-           command option 'libraries') is valid, i.e. it is a list of
-           2-tuples, where the tuples are (library_name, build_info_dict).
-           Raise DistutilsSetupError if the structure is invalid anywhere;
-           just returns otherwise."""
-
-        # Yechh, blecch, ackk: this is ripped straight out of build_ext.py,
-        # with only names changed to protect the innocent!
-
-        if type(libraries) is not ListType:
-            raise DistutilsSetupError, \
-                  "'libraries' option must be a list of tuples"
-
-        for lib in libraries:
-            if type(lib) is not TupleType and len(lib) != 2:
-                raise DistutilsSetupError, \
-                      "each element of 'libraries' must a 2-tuple"
-
-            if type(lib[0]) is not StringType:
-                raise DistutilsSetupError, \
-                      "first element of each tuple in 'libraries' " + \
-                      "must be a string (the library name)"
-            if '/' in lib[0] or (os.sep != '/' and os.sep in lib[0]):
-                raise DistutilsSetupError, \
-                      ("bad library name '%s': " + 
-                       "may not contain directory separators") % \
-                      lib[0]
-
-            if type(lib[1]) is not DictionaryType:
-                raise DistutilsSetupError, \
-                      "second element of each tuple in 'libraries' " + \
-                      "must be a dictionary (build info)"
-        # for lib
-
-    # check_library_list ()
-
-
-    def get_library_names (self):
-        # Assume the library list is valid -- 'check_library_list()' is
-        # called from 'finalize_options()', so it should be!
-
-        if not self.libraries:
-            return None
-
-        lib_names = []
-        for (lib_name, build_info) in self.libraries:
-            lib_names.append(lib_name)
-        return lib_names
-
-    # get_library_names ()
-
-
-    def get_source_files (self):
-        self.check_library_list(self.libraries)
-        filenames = []
-
-        # Gets source files specified and any "*.h" header files in
-        # those directories.        
-        for ext in self.libraries:
-            filenames.extend(ext[1]['sources'])
-            filenames.extend(get_headers(get_directories(ext[1]['sources'])))
-
-        return filenames
-
-    def build_libraries (self, libraries):
-
-        compiler = self.compiler
-
-        for (lib_name, build_info) in libraries:
-            sources = build_info.get('sources')
-            if sources is None or type(sources) not in (ListType, TupleType):
-                raise DistutilsSetupError, \
-                      ("in 'libraries' option (library '%s'), " +
-                       "'sources' must be present and must be " +
-                       "a list of source filenames") % lib_name
-            sources = list(sources)
-
-            self.announce("building '%s' library" % lib_name)
-
-            # First, compile the source code to object files in the library
-            # directory.  (This should probably change to putting object
-            # files in a temporary build directory.)
-            macros = build_info.get('macros')
-            include_dirs = build_info.get('include_dirs')
-            objects = self.compiler.compile(sources,
-                                            output_dir=self.build_temp,
-                                            macros=macros,
-                                            include_dirs=include_dirs,
-                                            debug=self.debug)
-
-            # Now "link" the object files together into a static library.
-            # (On Unix at least, this isn't really linking -- it just
-            # builds an archive.  Whatever.)
-            self.compiler.create_static_lib(objects, lib_name,
-                                            output_dir=self.build_clib,
-                                            debug=self.debug)
-
-        # for libraries
-
-    # build_libraries ()
-
-# class build_lib
diff --git a/scipy_distutils/command/build_ext.py b/scipy_distutils/command/build_ext.py
deleted file mode 100644
index 3434346..0000000
--- a/scipy_distutils/command/build_ext.py
+++ /dev/null
@@ -1,60 +0,0 @@
-""" Modified version of build_ext that handles fortran source files and f2py 
-
-    build_extension() handles building any needed static fortran libraries
-    first and then calls our slightly_modified_..._extenstion() to do the
-    rest of the processing in the (mostly) standard way.    
-"""
-
-import os, string
-from types import *
-
-from distutils.dep_util import newer_group, newer
-from distutils.command.build_ext import *
-from distutils.command.build_ext import build_ext as old_build_ext
-
-class build_ext (old_build_ext):
-
-    def run (self):
-
-        if self.distribution.has_f_libraries():
-            build_flib = self.get_finalized_command('build_flib')
-            self.libraries.extend(build_flib.get_library_names() or [])
-            self.library_dirs.extend(build_flib.get_library_dirs() or [])
-            #self.library_dirs.extend(build_flib.get_library_dirs() or [])
-            #runtime_dirs = build_flib.get_runtime_library_dirs()
-            #self.runtime_library_dirs.extend(runtime_dirs or [])
-            
-            #?? what is this ??
-            self.library_dirs.append(build_flib.build_flib)
-            
-        old_build_ext.run(self)
-    
-    def build_extension(self, ext):
-        # support for building static fortran libraries
-        if self.distribution.has_f_libraries():
-            build_flib = self.get_finalized_command('build_flib')
-            moreargs = build_flib.fcompiler.get_extra_link_args()
-            if moreargs != []:                
-                if ext.extra_link_args is None:
-                    ext.extra_link_args = moreargs
-                else:
-                    ext.extra_link_args += moreargs
-            # be sure to include fortran runtime library directory names
-            runtime_dirs = build_flib.get_runtime_library_dirs()
-            ext.runtime_library_dirs.extend(runtime_dirs or [])
-            linker_so = build_flib.fcompiler.get_linker_so()
-            if linker_so is not None:
-                self.compiler.linker_so = linker_so
-        # end of fortran source support
-        return old_build_ext.build_extension(self,ext)
-
-    def get_source_files (self):
-        self.check_extensions_list(self.extensions)
-        filenames = []
-
-        # Get sources and any include files in the same directory.
-        for ext in self.extensions:
-            filenames.extend(ext.sources)
-            filenames.extend(get_headers(get_directories(ext.sources)))
-
-        return filenames
diff --git a/scipy_distutils/command/build_flib.py b/scipy_distutils/command/build_flib.py
deleted file mode 100644
index 1fdf205..0000000
--- a/scipy_distutils/command/build_flib.py
+++ /dev/null
@@ -1,840 +0,0 @@
-""" Implements the build_flib command which should go into Distutils
-    at some point.
-     
-    Note:
-    Right now, we're dynamically linking to the Fortran libraries on 
-    some platforms (Sun for sure).  This is fine for local installations
-    but a bad thing for redistribution because these libraries won't
-    live on any machine that doesn't have a fortran compiler installed.
-    It is pretty hard (impossible?) to get gcc to pass the right compiler
-    flags on Sun to get the linker to use static libs for the fortran
-    stuff.  Investigate further...
-
-Bugs:
- ***  Options -e and -x have no effect when used with --help-compiler
-       options. E.g. 
-       ./setup.py build_flib --help-compiler -e g77-3.0
-      finds g77-2.95.
-      How to extract these options inside the show_compilers function?
- ***  Option --force has no effect when switching a compiler. One must
-      manually remove .o files that were generated earlier by a
-      different compiler.
- ***  compiler.is_available() method may not work correctly on nt
-      because of lack of knowledge how to get exit status in
-      run_command function. However, it may give reasonable results
-      based on a version string.
- ***  Some vendors provide different compilers for F77 and F90
-      compilations. Currently, checking the availability of these
-      compilers is based on only checking the availability of the
-      corresponding F77 compiler. If it exists, then F90 is assumed
-      to exist also.
-
-Open issues:
- ***  User-defined compiler flags. Do we need --fflags?
-
-Fortran compilers (as to be used with --fcompiler= option):
-      Absoft
-      Sun
-      SGI
-      Intel
-      Itanium
-      NAG
-      Compaq
-      Gnu
-      VAST
-"""
-
-import distutils
-import distutils.dep_util, distutils.dir_util
-import os,sys,string
-import commands,re
-from types import *
-from distutils.command.build_clib import build_clib
-from distutils.errors import *
-
-if os.name == 'nt':
-    def run_command(command):
-        """ not sure how to get exit status on nt. """
-        in_pipe,out_pipe = os.popen4(command)
-        in_pipe.close()
-        text = out_pipe.read()
-        return 0, text
-else:
-    run_command = commands.getstatusoutput
-    
-def show_compilers():
-    for compiler_class in all_compilers:
-        compiler = compiler_class()
-        if compiler.is_available():
-            print compiler
-
-class build_flib (build_clib):
-
-    description = "build f77/f90 libraries used by Python extensions"
-
-    user_options = [
-        ('build-flib', 'b',
-         "directory to build f77/f90 libraries to"),
-        ('build-temp', 't',
-         "directory to put temporary build by-products"),
-        ('debug', 'g',
-         "compile with debugging information"),
-        ('force', 'f',
-         "forcibly build everything (ignore file timestamps)"),
-        ('fcompiler=', 'c',
-         "specify the compiler type"),
-        ('fcompiler-exec=', 'e',
-         "specify the path to F77 compiler"),
-        ('f90compiler-exec=', 'x',
-         "specify the path to F90 compiler"),
-        ]
-
-    boolean_options = ['debug', 'force']
-
-    help_options = [
-        ('help-compiler', None,
-         "list available compilers", show_compilers),
-        ]
-
-    def initialize_options (self):
-
-        self.build_flib = None
-        self.build_temp = None
-
-        self.fortran_libraries = None
-        self.define = None
-        self.undef = None
-        self.debug = None
-        self.force = 0
-        self.fcompiler = None
-        self.fcompiler_exec = None
-        self.f90compiler_exec = None
-
-    # initialize_options()
-
-    def finalize_options (self):
-        self.set_undefined_options('build',
-                                   ('build_temp', 'build_flib'),
-                                   ('build_temp', 'build_temp'),
-                                   ('debug', 'debug'),
-                                   ('force', 'force'))
-        fc = find_fortran_compiler(self.fcompiler,
-                                   self.fcompiler_exec,
-                                   self.f90compiler_exec)
-        if not fc:
-            raise DistutilsOptionError, 'Fortran compiler not available: %s'%(self.fcompiler)
-        else:
-            self.announce(' using %s Fortran compiler' % fc)
-        self.fcompiler = fc
-        if self.has_f_libraries():
-            self.fortran_libraries = self.distribution.fortran_libraries
-            self.check_library_list(self.fortran_libraries)
-
-    # finalize_options()
-
-    def has_f_libraries(self):
-        return self.distribution.has_f_libraries()
-
-    def run (self):
-        if not self.has_f_libraries():
-            return
-        self.build_libraries(self.fortran_libraries)
-
-    # run ()
-
-    def get_library_names(self):
-        if not self.has_f_libraries():
-            return None
-
-        lib_names = [] 
-
-        for (lib_name, build_info) in self.fortran_libraries:
-            lib_names.append(lib_name)
-
-        if self.fcompiler is not None:
-            lib_names.extend(self.fcompiler.get_libraries())
-            
-        return lib_names
-
-    # get_library_names ()
-
-    def get_library_dirs(self):
-        if not self.has_f_libraries():
-            return []#None
-
-        lib_dirs = [] 
-
-        if self.fcompiler is not None:
-            lib_dirs.extend(self.fcompiler.get_library_dirs())
-            
-        return lib_dirs
-
-    # get_library_dirs ()
-
-    def get_runtime_library_dirs(self):
-        if not self.has_f_libraries():
-            return []#None
-
-        lib_dirs = [] 
-
-        if self.fcompiler is not None:
-            lib_dirs.extend(self.fcompiler.get_runtime_library_dirs())
-            
-        return lib_dirs
-
-    # get_library_dirs ()
-
-    def get_source_files (self):
-        self.check_library_list(self.fortran_libraries)
-        filenames = []
-
-        # Gets source files specified 
-        for ext in self.fortran_libraries:
-            filenames.extend(ext[1]['sources'])
-
-        return filenames    
-                
-    def build_libraries (self, fortran_libraries):
-        
-        fcompiler = self.fcompiler
-        
-        for (lib_name, build_info) in fortran_libraries:
-            sources = build_info.get('sources')
-            if sources is None or type(sources) not in (ListType, TupleType):
-                raise DistutilsSetupError, \
-                      ("in 'fortran_libraries' option (library '%s'), " +
-                       "'sources' must be present and must be " +
-                       "a list of source filenames") % lib_name
-            sources = list(sources)
-            module_dirs = build_info.get('module_dirs')
-            module_files = build_info.get('module_files')
-            self.announce(" building '%s' library" % lib_name)
-            
-            if module_files:
-                fcompiler.build_library(lib_name, module_files,
-                                        temp_dir=self.build_temp)
-                
-            fcompiler.build_library(lib_name, sources,
-                                    module_dirs, temp_dir=self.build_temp)
-
-        # for loop
-
-    # build_libraries ()
-
-
-class fortran_compiler_base:
-
-    vendor = None
-    ver_match = None
-    
-    def __init__(self):
-        # Default initialization. Constructors of derived classes MUST
-        # call this functions.
-        self.version = None
-        
-        self.f77_switches = ''
-        self.f77_opt = ''
-        self.f77_debug = ''
-        
-        self.f90_switches = ''
-        self.f90_opt = ''
-        self.f90_debug = ''
-        
-        self.libraries = []
-        self.library_dirs = []
-
-        if self.vendor is None:
-            raise DistutilsInternalError,\
-                  '%s must define vendor attribute'%(self.__class__)
-        if self.ver_match is None:
-            raise DistutilsInternalError,\
-                  '%s must define ver_match attribute'%(self.__class__)
-
-    def to_object(self,dirty_files,module_dirs=None, temp_dir=''):
-        files = string.join(dirty_files)
-        f90_files = get_f90_files(dirty_files)
-        f77_files = get_f77_files(dirty_files)
-        if f90_files != []:
-            obj1 = self.f90_compile(f90_files,module_dirs,temp_dir = temp_dir)
-        else:
-            obj1 = []
-        if f77_files != []:
-            obj2 = self.f77_compile(f77_files, temp_dir = temp_dir)
-        else:
-            obj2 = []
-        return obj1 + obj2
-
-    def source_to_object_names(self,source_files, temp_dir=''):
-        file_list = map(lambda x: os.path.basename(x),source_files)
-        file_base_ext = map(lambda x: os.path.splitext(x),file_list)
-        object_list = map(lambda x: x[0] +'.o',file_base_ext)
-        object_files = map(lambda x,td=temp_dir: os.path.join(td,x),object_list)
-        return object_files
-        
-    def source_and_object_pairs(self,source_files, temp_dir=''):
-        object_files = self.source_to_object_names(source_files,temp_dir)
-        file_pairs = zip(source_files,object_files)
-        return file_pairs
- 
-    def f_compile(self,compiler,switches, source_files,
-                  module_dirs=None, temp_dir=''):
-        module_switch = self.build_module_switch(module_dirs)
-        file_pairs = self.source_and_object_pairs(source_files,temp_dir)
-        object_files = []
-        for source,object in file_pairs:
-            if distutils.dep_util.newer(source,object):
-                cmd =  compiler + ' ' + switches + \
-                       module_switch + ' -c ' + source + ' -o ' + object 
-                print cmd
-                failure = os.system(cmd)
-                if failure:
-                    raise ValueError, 'failure during compile' 
-                object_files.append(object)
-        return object_files
-        #return all object files to make sure everything is archived 
-        #return map(lambda x: x[1], file_pairs)
-
-    def f90_compile(self,source_files,module_dirs=None, temp_dir=''):
-        switches = string.join((self.f90_switches, self.f90_opt))
-        return self.f_compile(self.f90_compiler,switches,
-                              source_files, module_dirs,temp_dir)
-
-    def f77_compile(self,source_files,module_dirs=None, temp_dir=''):
-        switches = string.join((self.f77_switches, self.f77_opt))
-        return self.f_compile(self.f77_compiler,switches,
-                              source_files, module_dirs,temp_dir)
-
-
-    def build_module_switch(self, module_dirs):
-        return ''
-
-    def create_static_lib(self, object_files, library_name,
-                          output_dir='', debug=None):
-        lib_file = os.path.join(output_dir,'lib'+library_name+'.a')
-        newer = distutils.dep_util.newer
-        # This doesn't work -- no way to know if the file is in the archive
-        #object_files = filter(lambda o,lib=lib_file:\
-        #                 distutils.dep_util.newer(o,lib),object_files)
-        objects = string.join(object_files)
-        if objects:
-            cmd = 'ar -cur  %s %s' % (lib_file,objects)
-            print cmd
-            os.system(cmd)
-
-    def build_library(self,library_name,source_list,module_dirs=None,
-                      temp_dir = ''):
-        #make sure the temp directory exists before trying to build files
-        import distutils.dir_util
-        distutils.dir_util.mkpath(temp_dir)
-        #this compiles the files
-        object_list = self.to_object(source_list,module_dirs,temp_dir)
-        # actually we need to use all the object file names here to
-        # make sure the library is always built.  It could occur that an
-        # object file exists but hasn't been put in the archive. (happens
-        # a lot when builds fail once and are restarted).
-        object_list = self.source_to_object_names(source_list, temp_dir)
-        #self.create_static_lib(object_list,library_name,temp_dir)           
-        # This is pure bunk...
-        # Windows fails for long argument strings on the command line.
-        # if objects is real long (> 2048 chars or so on my machine),
-        # the command fails (cmd.exe /e:2048 on w2k)
-        # for now we'll split linking into to steps which should work for
-        objects = object_list[:]
-        while objects:
-            obj,objects = objects[:20],objects[20:]
-            self.create_static_lib(obj,library_name,temp_dir)
-
-    def dummy_fortran_files(self):
-        import tempfile 
-        d = tempfile.gettempdir()
-        dummy_name = os.path.join(d,'__dummy.f')
-        dummy = open(dummy_name,'w')
-        dummy.write("      subroutine dummy()\n      end\n")
-        dummy.close()
-        return (os.path.join(d,'__dummy.f'),os.path.join(d,'__dummy.o'))
-    
-    def is_available(self):
-        return self.get_version()
-        
-    def get_version(self):
-        """Return the compiler version. If compiler is not available,
-        return empty string."""
-        # XXX: Is there compilers that have no version? If yes,
-        #      this test will fail even if the compiler is available.
-        if self.version is not None:
-            # Finding version is expensive, so return previously found
-            # version string.
-            return self.version
-        self.version = ''
-        # works I think only for unix...        
-        #print 'command:', self.ver_cmd
-        exit_status, out_text = run_command(self.ver_cmd)
-        #print exit_status, out_text
-        if not exit_status:
-            m = re.match(self.ver_match,out_text)
-            if m:
-                self.version = m.group('version')
-        return self.version
-
-    def get_libraries(self):
-        return self.libraries
-    def get_library_dirs(self):
-        return self.library_dirs
-    def get_extra_link_args(self):
-        return []
-    def get_runtime_library_dirs(self):
-        return []
-    def get_linker_so(self):
-        """
-        If a compiler requires specific linker then return a list
-        containing a linker executable name and linker options.
-        Otherwise, return None.
-        """
-
-    def __str__(self):
-        return "%s %s" % (self.vendor, self.get_version())
-
-
-class absoft_fortran_compiler(fortran_compiler_base):
-
-    vendor = 'Absoft'
-    ver_match = r'FORTRAN 77 Compiler (?P<version>[^\s*,]*).*?Absoft Corp'
-    
-    def __init__(self, fc = None, f90c = None):
-        fortran_compiler_base.__init__(self)
-        if fc is None:
-            fc = 'f77'
-        if f90c is None:
-            f90c = 'f90'
-
-        self.f77_compiler = fc
-        self.f90_compiler = f90c
-
-        # got rid of -B108 cause it was generating 2 underscores instead
-        # of one on the newest version.  Now we use -YEXT_SFX=_ to 
-        # specify the output format
-        if os.name == 'nt':
-            self.f90_switches = '-f fixed  -YCFRL=1 -YCOM_NAMES=LCS' \
-                                ' -YCOM_PFX  -YEXT_PFX -YEXT_NAMES=LCS' \
-                                ' -YCOM_SFX=_ -YEXT_SFX=_ -YEXT_NAMES=LCS'        
-            self.f90_opt = '-O -Q100'
-            self.f77_switches = '-N22 -N90 -N110'
-            self.f77_opt = '-O -Q100'
-            self.libraries = ['fio', 'fmath', 'f90math', 'COMDLG32']
-        else:
-            self.f90_switches = '-ffixed  -YCFRL=1 -YCOM_NAMES=LCS' \
-                                ' -YCOM_PFX  -YEXT_PFX -YEXT_NAMES=LCS' \
-                                ' -YCOM_SFX=_ -YEXT_SFX=_ -YEXT_NAMES=LCS'        
-            self.f90_opt = '-O -B101'                            
-            self.f77_switches = '-N22 -N90 -N110 -B108'
-            self.f77_opt = '-O -B101'
-
-            self.libraries = ['fio', 'f77math', 'f90math']
-        
-        try:
-            dir = os.environ['ABSOFT'] 
-            self.library_dirs = [os.path.join(dir,'lib')]
-        except KeyError:
-            self.library_dirs = []
-
-        self.ver_cmd = self.f77_compiler + ' -V -c %s -o %s' % \
-                       self.dummy_fortran_files()
-
-    def build_module_switch(self,module_dirs):
-        res = ''
-        if module_dirs:
-            for mod in module_dirs:
-                res = res + ' -p' + mod
-        return res
-
-    def get_extra_link_args(self):
-        return []
-        # Couldn't get this to link for anything using gcc.
-        #dr = "c:\\Absoft62\\lib"
-        #libs = ['fio.lib', 'COMDLG32.lib','fmath.lib', 'f90math.lib','libcomdlg32.a' ]        
-        #libs = map(lambda x,dr=dr:os.path.join(dr,x),libs)
-        #return libs
-
-
-class sun_fortran_compiler(fortran_compiler_base):
-
-    vendor = 'Sun'
-    ver_match =  r'f77: (?P<version>[^\s*,]*)'
-
-    def __init__(self, fc = None, f90c = None):
-        fortran_compiler_base.__init__(self)
-        if fc is None:
-            fc = 'f77'
-        if f90c is None:
-            f90c = 'f90'
-
-        self.f77_compiler = fc # not tested
-        self.f77_switches = ' -pic '
-        self.f77_opt = ' -fast -dalign '
-
-        self.f90_compiler = f90c
-        self.f90_switches = ' -fixed ' # ??? why fixed?
-        self.f90_opt = ' -fast -dalign '
-
-        self.libraries = ['f90', 'F77', 'M77', 'sunmath', 'm']
-        #threaded
-        #self.libraries = ['f90', 'F77_mt', 'sunmath_mt', 'm', 'thread']
-        #self.libraries = []
-        self.library_dirs = self.find_lib_dir()
-        #print 'sun:',self.library_dirs
-
-        self.ver_cmd = self.f77_compiler + ' -V'
-
-    def build_module_switch(self,module_dirs):
-        res = ''
-        if module_dirs:
-            for mod in module_dirs:
-                res = res + ' -M' + mod
-        return res
-
-    def find_lib_dir(self):
-        library_dirs = []
-        lib_match = r'### f90: Note: LD_RUN_PATH\s*= '\
-                     '(?P<lib_paths>[^\s.]*).*'
-        cmd = self.f90_compiler + ' -dryrun dummy.f'
-        exit_status, output = run_command(cmd)
-        if not exit_status:
-            libs = re.findall(lib_match,output)
-            if libs:
-                library_dirs = string.split(libs[0],':')
-                self.get_version() # force version calculation
-                compiler_home = os.path.dirname(library_dirs[0])
-                library_dirs.append(os.path.join(compiler_home,
-                                               self.version,'lib'))
-        return library_dirs
-    def get_runtime_library_dirs(self):
-        return self.find_lib_dir()
-    def get_extra_link_args(self):
-        return ['-mimpure-text']
-
-
-class mips_fortran_compiler(fortran_compiler_base):
-
-    vendor = 'SGI'
-    ver_match =  r'MIPSpro Compilers: Version (?P<version>[^\s*,]*)'
-    
-    def __init__(self, fc = None, f90c = None):
-        fortran_compiler_base.__init__(self)
-        if fc is None:
-            fc = 'f77'
-        if f90c is None:
-            f90c = 'f90'
-
-        self.f77_compiler = fc         # not tested
-        self.f77_switches = ' -n32 -KPIC '
-        self.f77_opt = ' -O3 '
-
-        self.f90_compiler = f90c
-        self.f90_switches = ' -n32 -KPIC -fixedform ' # why fixed ???
-        self.f90_opt = ' '                            
-        
-        self.libraries = ['fortran', 'ftn', 'm']
-        self.library_dirs = self.find_lib_dir()
-
-        self.ver_cmd = self.f77_compiler + ' -version'
-
-    def build_module_switch(self,module_dirs):
-        res = ''
-        return res 
-    def find_lib_dir(self):
-        library_dirs = []
-        return library_dirs
-    def get_runtime_library_dirs(self):
-	return self.find_lib_dir() 
-    def get_extra_link_args(self):
-	return []
-
-
-class gnu_fortran_compiler(fortran_compiler_base):
-
-    vendor = 'Gnu'
-    ver_match = r'g77 version (?P<version>[^\s*]*)'
-
-    def __init__(self, fc = None, f90c = None):
-        fortran_compiler_base.__init__(self)
-        if sys.platform == 'win32':
-            self.libraries = ['gcc','g2c']
-            self.library_dirs = self.find_lib_directories()
-
-        if fc is None:
-            fc = 'g77'
-        if f90c is None:
-            f90c = fc
-
-        self.f77_compiler = fc
-
-        switches = ' -Wall -fno-second-underscore '
-
-        if os.name != 'nt':
-            switches = switches + ' -fpic '
-
-        self.f77_switches = switches
-
-        self.ver_cmd = self.f77_compiler + ' -v '
-        self.f77_opt = self.get_opt()
-
-    def get_opt(self):
-        import cpuinfo
-        cpu = cpuinfo.cpuinfo()
-        opt = ' -O3 -funroll-loops '
-        
-        # only check for more optimization if g77 can handle
-        # it.
-        if self.get_version():
-            if self.version[0]=='3': # is g77 3.x.x
-                if cpu.is_AthlonK6():
-                    opt = opt + ' -march=k6 '
-                elif cpu.is_AthlonK7():
-                    opt = opt + ' -march=athlon '
-            if cpu.is_i686():
-                opt = opt + ' -march=i686 '
-            elif cpu.is_i586():
-                opt = opt + ' -march=i586 '
-            elif cpu.is_i486():
-                opt = opt + ' -march=i486 '
-            elif cpu.is_i386():
-                opt = opt + ' -march=i386 '
-            if cpu.is_Intel():
-                opt = opt + ' -malign-double '                
-        return opt
-        
-    def find_lib_directories(self):
-        lib_dir = []
-        match = r'Reading specs from (.*)/specs'
-
-        # works I think only for unix...        
-        exit_status, out_text = run_command('g77 -v')
-        if not exit_status:
-            m = re.findall(match,out_text)
-            if m:
-                lib_dir= m #m[0]          
-        return lib_dir
-
-    def get_linker_so(self):
-        # win32 linking should be handled by standard linker
-        if sys.platform != 'win32':
-            return [self.f77_compiler,'-shared']
- 
-    def f90_compile(self,source_files,module_files,temp_dir=''):
-        raise DistutilsExecError, 'f90 not supported by Gnu'
-
-
-#http://developer.intel.com/software/products/compilers/f50/linux/
-class intel_ia32_fortran_compiler(fortran_compiler_base):
-
-    vendor = 'Intel' # Intel(R) Corporation 
-    ver_match = r'Intel\(R\) Fortran Compiler for 32-bit applications, Version (?P<version>[^\s*]*)'
-
-    def __init__(self, fc = None, f90c = None):
-        fortran_compiler_base.__init__(self)
-
-        if fc is None:
-            fc = 'ifc'
-        if f90c is None:
-            f90c = fc
-
-        self.f77_compiler = fc
-        self.f90_compiler = f90c
-
-        switches = ' -KPIC '
-
-        import cpuinfo
-        cpu = cpuinfo.cpuinfo()
-        if cpu.has_fdiv_bug():
-            switches = switches + ' -fdiv_check '
-        if cpu.has_f00f_bug():
-            switches = switches + ' -0f_check '
-        self.f77_switches = self.f90_switches = switches
-        self.f77_switches = self.f77_switches + ' -FI '
-
-        self.f77_opt = self.f90_opt = self.get_opt()
-        
-        debug = ' -g -C '
-        self.f77_debug =  self.f90_debug = debug
-
-        self.ver_cmd = self.f77_compiler+' -FI -V -c %s -o %s' %\
-                       self.dummy_fortran_files()
-
-    def get_opt(self):
-        import cpuinfo
-        cpu = cpuinfo.cpuinfo()
-        opt = ' -O3 '
-        if cpu.is_PentiumPro() or cpu.is_PentiumII():
-            opt = opt + ' -tpp6 -xi '
-        elif cpu.is_PentiumIII():
-            opt = opt + ' -tpp6 '
-        elif cpu.is_Pentium():
-            opt = opt + ' -tpp5 '
-        elif cpu.is_PentiumIV():
-            opt = opt + ' -tpp7 -xW '
-        elif cpu.has_mmx():
-            opt = opt + ' -xM '
-        return opt
-        
-
-    def get_linker_so(self):
-        return [self.f77_compiler,'-shared']
-
-
-class intel_itanium_fortran_compiler(intel_ia32_fortran_compiler):
-
-    vendor = 'Itanium'
-    ver_match = r'Intel\(R\) Fortran 90 Compiler Itanium\(TM\) Compiler for the Itanium\(TM\)-based applications, Version (?P<version>[^\s*]*)'
-
-    def __init__(self, fc = None, f90c = None):
-        if fc is None:
-            fc = 'efc'
-        intel_ia32_fortran_compiler.__init__(self, fc, f90c)
-
-
-class nag_fortran_compiler(fortran_compiler_base):
-
-    vendor = 'NAG'
-    ver_match = r'NAGWare Fortran 95 compiler Release (?P<version>[^\s]*)'
-
-    def __init__(self, fc = None, f90c = None):
-        fortran_compiler_base.__init__(self)
-
-        if fc is None:
-            fc = 'f95'
-        if f90c is None:
-            f90c = fc
-
-        self.f77_compiler = fc
-        self.f90_compiler = f90c
-
-        switches = ''
-        debug = ' -g -gline -g90 -nan -C '
-
-        self.f77_switches = self.f90_switches = switches
-        self.f77_switches = self.f77_switches + ' -fixed '
-        self.f77_debug = self.f90_debug = debug
-        self.f77_opt = self.f90_opt = self.get_opt()
-
-        self.ver_cmd = self.f77_compiler+' -V '
-
-    def get_opt(self):
-        opt = ' -O4 -target=native '
-        return opt
-
-    def get_linker_so(self):
-        return [self.f77_compiler,'-Wl,-shared']
-
-
-class vast_fortran_compiler(fortran_compiler_base):
-
-    vendor = 'VAST'
-    ver_match = r'\s*Pacific-Sierra Research vf90 (Personal|Professional)\s+(?P<version>[^\s]*)'
-
-    def __init__(self, fc = None, f90c = None):
-        fortran_compiler_base.__init__(self)
-
-        if fc is None:
-            fc = 'g77'
-        if f90c is None:
-            f90c = 'f90'
-
-        self.f77_compiler = fc
-        self.f90_compiler = f90c
-
-        d,b = os.path.split(f90c)
-        vf90 = os.path.join(d,'v'+b)
-        self.ver_cmd = vf90+' -v '
-
-        gnu = gnu_fortran_compiler(fc)
-        if not gnu.is_available(): # VAST compiler requires g77.
-            self.version = ''
-            return
-        if not self.is_available():
-            return
-
-        self.f77_switches = gnu.f77_switches
-        self.f77_debug = gnu.f77_debug
-        self.f77_opt = gnu.f77_opt        
-
-        # XXX: need f90 switches, debug, opt
-
-    def get_linker_so(self):
-        return [self.f90_compiler,'-shared']
-
-class compaq_fortran_compiler(fortran_compiler_base):
-
-    vendor = 'Compaq'
-    ver_match = r'Compaq Fortran (?P<version>[^\s]*)'
-
-    def __init__(self, fc = None, f90c = None):
-        fortran_compiler_base.__init__(self)
-
-        if fc is None:
-            fc = 'fort'
-        if f90c is None:
-            f90c = fc
-
-        self.f77_compiler = fc
-        self.f90_compiler = f90c
-
-        switches = ' -assume no2underscore -nomixed_str_len_arg '
-        debug = ' -g -check_bounds '
-
-        self.f77_switches = self.f90_switches = switches
-        self.f77_debug = self.f90_debug = debug
-        self.f77_opt = self.f90_opt = self.get_opt()
-
-        # XXX: uncomment if required
-        #self.libraries = ' -lUfor -lfor -lFutil -lcpml -lots -lc '
-
-        # XXX: fix the version showing flag
-        self.ver_cmd = self.f77_compiler+' -V '
-
-    def get_opt(self):
-        opt = ' -O4 -align dcommons -arch host -assume bigarrays -assume nozsize -math_library fast -tune host '
-        return opt
-
-    def get_linker_so(self):
-        # XXX: is -shared needed?
-        return [self.f77_compiler,'-shared']
-
-
-def match_extension(files,ext):
-    match = re.compile(r'.*[.]('+ext+r')\Z',re.I).match
-    return filter(lambda x,match = match: match(x),files)
-
-def get_f77_files(files):
-    return match_extension(files,'for|f77|ftn|f')
-
-def get_f90_files(files):
-    return match_extension(files,'f90|f95')
-
-def get_fortran_files(files):
-    return match_extension(files,'f90|f95|for|f77|ftn|f')
-
-def find_fortran_compiler(vendor = None, fc = None, f90c = None):
-    fcompiler = None
-    for compiler_class in all_compilers:
-        if vendor is not None and vendor != compiler_class.vendor:
-            continue
-        print compiler_class
-        compiler = compiler_class(fc,f90c)
-        if compiler.is_available():
-            fcompiler = compiler
-            break
-    return fcompiler
-
-all_compilers = [absoft_fortran_compiler,
-                 mips_fortran_compiler,
-                 sun_fortran_compiler,
-                 intel_ia32_fortran_compiler,
-                 intel_itanium_fortran_compiler,
-                 nag_fortran_compiler,
-                 compaq_fortran_compiler,
-                 vast_fortran_compiler,
-                 gnu_fortran_compiler,
-                 ]
-
-if __name__ == "__main__":
-    show_compilers()
diff --git a/scipy_distutils/command/build_py.py b/scipy_distutils/command/build_py.py
deleted file mode 100644
index 6f5e5df..0000000
--- a/scipy_distutils/command/build_py.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from distutils.command.build_py import *
-from distutils.command.build_py import build_py as old_build_py
-from fnmatch import fnmatch
-
-def is_setup_script(file):
-    file = os.path.basename(file)
-    return (fnmatch(file,"setup.py") or fnmatch(file,"setup_*.py"))
-    
-class build_py(old_build_py):
-    def find_package_modules (self, package, package_dir):
-        # we filter all files that are setup.py or setup_xxx.py        
-        self.check_package(package, package_dir)
-        module_files = glob(os.path.join(package_dir, "*.py"))
-        modules = []
-        setup_script = os.path.abspath(self.distribution.script_name)
-
-        for f in module_files:
-            abs_f = os.path.abspath(f)
-            if abs_f != setup_script and not is_setup_script(f):
-                module = os.path.splitext(os.path.basename(f))[0]
-                modules.append((package, module, f))
-            else:
-                self.debug_print("excluding %s" % setup_script)
-        return modules
-
diff --git a/scipy_distutils/command/cpuinfo.py b/scipy_distutils/command/cpuinfo.py
deleted file mode 100644
index 3e1796d..0000000
--- a/scipy_distutils/command/cpuinfo.py
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env python
-"""
-cpuinfo
-
-Copyright 2001 Pearu Peterson all rights reserved,
-Pearu Peterson <pearu@cens.ioc.ee>          
-Permission to use, modify, and distribute this software is given under the
-terms of the LGPL.  See http://www.fsf.org
-
-Note:  This should be merged into proc at some point.  Perhaps proc should
-be returning classes like this instead of using dictionaries.
-
-NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
-$Revision$
-$Date$
-Pearu Peterson
-"""
-
-__version__ = "$Id$"
-
-__all__ = ['cpuinfo']
-
-import sys,string,re,types
-
-class cpuinfo_base:
-    """Holds CPU information and provides methods for requiring
-    the availability of various CPU features.
-    """
-
-    def _try_call(self,func):
-        try:
-            return func()
-        except:
-            pass
-
-    def __getattr__(self,name):
-        if name[0]!='_':
-            if hasattr(self,'_'+name):
-                attr = getattr(self,'_'+name)
-                if type(attr) is types.MethodType:
-                    return lambda func=self._try_call,attr=attr : func(attr)
-            else:
-                return lambda : None
-        raise AttributeError,name    
-
-
-class linux_cpuinfo(cpuinfo_base):
-
-    info = None
-    
-    def __init__(self):
-        if self.info is not None:
-            return
-        info = []
-        try:
-            for line in open('/proc/cpuinfo').readlines():
-                name_value = map(string.strip,string.split(line,':',1))
-                if len(name_value)!=2:
-                    continue
-                name,value = name_value
-                if not info or info[-1].has_key(name): # next processor
-                    info.append({})
-                info[-1][name] = value
-        except:
-            print sys.exc_value,'(ignoring)'
-        self.__class__.info = info
-
-    def _not_impl(self): pass
-
-    # Athlon
-
-    def _is_AMD(self):
-        return self.info[0]['vendor_id']=='AuthenticAMD'
-
-    def _is_AthlonK6(self):
-        return re.match(r'.*?AMD-K6',self.info[0]['model name']) is not None
-
-    def _is_AthlonK7(self):
-        return re.match(r'.*?AMD-K7',self.info[0]['model name']) is not None
-
-    # Alpha
-
-    def _is_Alpha(self):
-        return self.info[0]['cpu']=='Alpha'
-
-    def _is_EV4(self):
-        return self.is_Alpha() and self.info[0]['cpu model'] == 'EV4'
-
-    def _is_EV5(self):
-        return self.is_Alpha() and self.info[0]['cpu model'] == 'EV5'
-
-    def _is_EV56(self):
-        return self.is_Alpha() and self.info[0]['cpu model'] == 'EV56'
-
-    def _is_PCA56(self):
-        return self.is_Alpha() and self.info[0]['cpu model'] == 'PCA56'
-
-    # Intel
-
-    #XXX
-    _is_i386 = _not_impl
-
-    def _is_Intel(self):
-        return self.info[0]['vendor_id']=='GenuineIntel'
-
-    def _is_i486(self):
-        return self.info[0]['cpu']=='i486'
-
-    def _is_i586(self):
-        return self.is_Intel() and self.info[0]['model'] == '5'
-
-    def _is_i686(self):
-        return self.is_Intel() and self.info[0]['model'] == '6'
-
-    def _is_Celeron(self):
-        return re.match(r'.*?Celeron',
-                        self.info[0]['model name']) is not None
-
-    #XXX
-    _is_Pentium = _is_PentiumPro = _is_PentiumIII = _is_PentiumIV = _not_impl
-
-    def _is_PentiumII(self):
-        return re.match(r'.*?Pentium II\b',
-                        self.info[0]['model name']) is not None
-
-    # Varia
-
-    def _is_singleCPU(self):
-        return len(self.info) == 1
-
-    def _has_fdiv_bug(self):
-        return self.info[0]['fdiv_bug']=='yes'
-
-    def _has_f00f_bug(self):
-        return self.info[0]['f00f_bug']=='yes'
-
-    def _has_mmx(self):
-        return re.match(r'.*?\bmmx',self.info[0]['flags']) is not None
-
-if sys.platform[:5] == 'linux': # variations: linux2,linux-i386 (any others?)
-    cpuinfo = linux_cpuinfo
-#XXX: other OS's. Eg. use _winreg on Win32. Or os.uname on unices.
-else:
-    cpuinfo = cpuinfo_base
-
-
-"""
-laptop:
-[{'cache size': '256 KB', 'cpu MHz': '399.129', 'processor': '0', 'fdiv_bug': 'no', 'coma_bug': 'no', 'model': '6', 'cpuid level': '2', 'model name': 'Mobile Pentium II', 'fpu_exception': 'yes', 'hlt_bug': 'no', 'bogomips': '796.26', 'vendor_id': 'GenuineIntel', 'fpu': 'yes', 'wp': 'yes', 'cpu family': '6', 'f00f_bug': 'no', 'stepping': '13', 'flags': 'fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr'}]
-
-kev:
-[{'cache size': '512 KB', 'cpu MHz': '350.799', 'processor': '0', 'fdiv_bug': 'no', 'coma_bug': 'no', 'model': '5', 'cpuid level': '2', 'model name': 'Pentium II (Deschutes)', 'fpu_exception': 'yes', 'hlt_bug': 'no', 'bogomips': '699.59', 'vendor_id': 'GenuineIntel', 'fpu': 'yes', 'wp': 'yes', 'cpu family': '6', 'f00f_bug': 'no', 'stepping': '3', 'flags': 'fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr'}, {'cache size': '512 KB', 'cpu MHz': '350.799', 'processor': '1', 'fdiv_bug': 'no', 'coma_bug': 'no', 'model': '5', 'cpuid level': '2', 'model name': 'Pentium II (Deschutes)', 'fpu_exception': 'yes', 'hlt_bug': 'no', 'bogomips': '701.23', 'vendor_id': 'GenuineIntel', 'fpu': 'yes', 'wp': 'yes', 'cpu family': '6', 'f00f_bug': 'no', 'stepping': '3', 'flags': 'fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr'}]
-
-ath:
-[{'cache size': '512 KB', 'cpu MHz': '503.542', 'processor': '0', 'fdiv_bug': 'no', 'coma_bug': 'no', 'model': '1', 'cpuid level': '1', 'model name': 'AMD-K7(tm) Processor', 'fpu_exception': 'yes', 'hlt_bug': 'no', 'bogomips': '1002.70', 'vendor_id': 'AuthenticAMD', 'fpu': 'yes', 'wp': 'yes', 'cpu family': '6', 'f00f_bug': 'no', 'stepping': '2', 'flags': 'fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat mmx syscall mmxext 3dnowext 3dnow'}]
-
-fiasco:
-[{'max. addr. space #': '127', 'cpu': 'Alpha', 'cpu serial number': 'Linux_is_Great!', 'kernel unaligned acc': '0 (pc=0,va=0)', 'system revision': '0', 'system variation': 'LX164', 'cycle frequency [Hz]': '533185472', 'system serial number': 'MILO-2.0.35-c5.', 'timer frequency [Hz]': '1024.00', 'cpu model': 'EV56', 'platform string': 'N/A', 'cpu revision': '0', 'BogoMIPS': '530.57', 'cpus detected': '0', 'phys. address bits': '40', 'user unaligned acc': '1340 (pc=2000000ec90,va=20001156da4)', 'page size [bytes]': '8192', 'system type': 'EB164', 'cpu variation': '0'}]
-"""
-
-if __name__ == "__main__":
-    cpu = cpuinfo()
-
-    cpu.is_blaa()
-    cpu.is_Intel()
-    cpu.is_Alpha()
-
-    print 'CPU information:',
-    for name in dir(cpuinfo):
-        if name[0]=='_' and name[1]!='_' and getattr(cpu,name[1:])():
-            print name[1:],
-    print
diff --git a/scipy_distutils/command/install.py b/scipy_distutils/command/install.py
deleted file mode 100644
index 43be36c..0000000
--- a/scipy_distutils/command/install.py
+++ /dev/null
@@ -1,54 +0,0 @@
-from types import StringType
-from distutils.command.install import *
-from distutils.command.install import install as old_install
-from distutils.util import convert_path
-from distutils.file_util import write_file
-from distutils.errors import DistutilsOptionError
-
-#install support for Numeric.pth setup
-class install(old_install):
-    def finalize_options (self):
-        old_install.finalize_options(self)
-        self.install_lib = self.install_libbase
-        
-    def handle_extra_path (self):
-        if self.extra_path is None:
-            self.extra_path = self.distribution.extra_path
-
-        if self.extra_path is not None:
-            if type(self.extra_path) is StringType:
-                self.extra_path = string.split(self.extra_path, ',')
-            if len(self.extra_path) == 1:
-                path_file = extra_dirs = self.extra_path[0]
-            elif len(self.extra_path) == 2:
-                (path_file, extra_dirs) = self.extra_path
-            else:
-                raise DistutilsOptionError, \
-                      "'extra_path' option must be a list, tuple, or " + \
-                      "comma-separated string with 1 or 2 elements"
-
-            # convert to local form in case Unix notation used (as it
-            # should be in setup scripts)
-            extra_dirs = convert_path(extra_dirs)
-
-        else:
-            path_file = None
-            extra_dirs = ''
-
-        # XXX should we warn if path_file and not extra_dirs? (in which
-        # case the path file would be harmless but pointless)
-        self.path_file = path_file
-        self.extra_dirs = ''
-        self.pth_file = extra_dirs
-
-    # handle_extra_path ()
-
-    def create_path_file (self):
-        filename = os.path.join(self.install_libbase,
-                                self.path_file + ".pth")
-        if self.install_path_file:
-            self.execute(write_file,
-                         (filename, [self.pth_file]),
-                         "creating %s" % filename)
-        else:
-            self.warn("path file '%s' not created" % filename)
\ No newline at end of file
diff --git a/scipy_distutils/command/install_data.py b/scipy_distutils/command/install_data.py
deleted file mode 100644
index 1592632..0000000
--- a/scipy_distutils/command/install_data.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from distutils.command.install_data import *
-from distutils.command.install_data import install_data as old_install_data
-
-#data installer with improved intelligence over distutils
-#data files are copied into the project directory instead
-#of willy-nilly
-class install_data (old_install_data):
-    def finalize_options (self):
-        print 'hhhhhhhhhhhheeeeeeeeeeerrrrrrrrrrrreeeeeeeeeeeee'
-        self.set_undefined_options('install',
-                                   ('install_lib', 'install_dir'),
-                                   ('root', 'root'),
-                                   ('force', 'force'),
-                                  )
diff --git a/scipy_distutils/command/install_headers.py b/scipy_distutils/command/install_headers.py
deleted file mode 100644
index b8dc219..0000000
--- a/scipy_distutils/command/install_headers.py
+++ /dev/null
@@ -1,20 +0,0 @@
-"""
-    I don't know much about this one, so I'm not going to mess with 
-    it much. (eric)
-"""
-from distutils.command.install import *
-from distutils.command.install_headers import install_headers as old_install_headers
-
-class install_headers (old_install_headers):
-    def run (self):
-        headers = self.distribution.headers
-        if not headers:
-            return
-        # hack to force headers into Numeric instead of SciPy
-        import os
-        d,f = os.path.split(self.install_dir)
-        self.install_dir = os.path.join(d,'Numeric')        
-        self.mkpath(self.install_dir)
-        for header in headers:
-            (out, _) = self.copy_file(header, self.install_dir)
-            self.outfiles.append(out)    
diff --git a/scipy_distutils/command/sdist.py b/scipy_distutils/command/sdist.py
deleted file mode 100644
index 0b8e422..0000000
--- a/scipy_distutils/command/sdist.py
+++ /dev/null
@@ -1,105 +0,0 @@
-from distutils.command.sdist import *
-from distutils.command.sdist import sdist as old_sdist
-
-class sdist(old_sdist):
-    def add_defaults (self):
-        old_sdist.add_defaults(self)
-        if self.distribution.has_f_libraries():
-            build_flib = self.get_finalized_command('build_flib')
-            self.filelist.extend(build_flib.get_source_files())
-
-        if self.distribution.has_data_files():
-            self.filelist.extend(self.distribution.get_data_files())
-
-    def make_release_tree (self, base_dir, files):
-        """Create the directory tree that will become the source
-        distribution archive.  All directories implied by the filenames in
-        'files' are created under 'base_dir', and then we hard link or copy
-        (if hard linking is unavailable) those files into place.
-        Essentially, this duplicates the developer's source tree, but in a
-        directory named after the distribution, containing only the files
-        to be distributed.
-        """
-        # Create all the directories under 'base_dir' necessary to
-        # put 'files' there; the 'mkpath()' is just so we don't die
-        # if the manifest happens to be empty.
-        dest_files = remove_common_base(files)
-        self.mkpath(base_dir)
-        dir_util.create_tree(base_dir, dest_files,
-                             verbose=self.verbose, dry_run=self.dry_run)
-
-        # And walk over the list of files, either making a hard link (if
-        # os.link exists) to each one that doesn't already exist in its
-        # corresponding location under 'base_dir', or copying each file
-        # that's out-of-date in 'base_dir'.  (Usually, all files will be
-        # out-of-date, because by default we blow away 'base_dir' when
-        # we're done making the distribution archives.)
-    
-        if hasattr(os, 'link'):        # can make hard links on this system
-            link = 'hard'
-            msg = "making hard links in %s..." % base_dir
-        else:                           # nope, have to copy
-            link = None
-            msg = "copying files to %s..." % base_dir
-
-        if not files:
-            self.warn("no files to distribute -- empty manifest?")
-        else:
-            self.announce(msg)
-        
-        dest_files = [os.path.join(base_dir,file) for file in dest_files]
-        file_pairs = zip(files,dest_files)    
-        for file,dest in file_pairs:
-            if not os.path.isfile(file):
-                self.warn("'%s' not a regular file -- skipping" % file)
-            else:
-                #ej: here is the only change -- made to handle
-                # absolute paths to files as well as relative
-                #par,file_name = os.path.split(file)
-                #dest = os.path.join(base_dir, file_name)
-                # end of changes
-                
-                # old code
-                #dest = os.path.join(base_dir, file)
-                #end old code
-                self.copy_file(file, dest, link=link)
-
-        self.distribution.metadata.write_pkg_info(base_dir)
-        #raise ValueError
-    # make_release_tree ()
-
-def remove_common_base(files):
-    """ Remove the greatest common base directory from all the
-        absolute file paths in the list of files.  files in the
-        list without a parent directory are not affected.
-    """
-    rel_files = filter(lambda x: not os.path.dirname(x),files)
-    abs_files = filter(os.path.dirname,files)
-    base = find_common_base(abs_files)
-    # will leave files with local path unaffected
-    # and maintains original file order
-    results = [string.replace(file,base,'') for file in files]
-    return results
-
-def find_common_base(files):
-    """ Find the "greatest common base directory" of a list of files
-    """
-    if not files:
-        return files
-    result = ''
-    d,f = os.path.split(files[0])
-    keep_looking = 1    
-    while(keep_looking and d):
-        keep_looking = 0
-        for file in files:
-            if string.find('start'+file,'start'+d) == -1:
-                keep_looking = 1
-                break
-        if keep_looking:
-            d,f = os.path.split(d)
-        else:
-            result = d
-            
-    if d: 
-        d = os.path.join(d,'')
-    return d        
\ No newline at end of file
diff --git a/scipy_distutils/core.py b/scipy_distutils/core.py
deleted file mode 100644
index faf8a8d..0000000
--- a/scipy_distutils/core.py
+++ /dev/null
@@ -1,41 +0,0 @@
-from distutils.core import *
-from distutils.core import setup as old_setup
-
-from distutils.cmd import Command
-from distutils.extension import Extension
-
-# Our dist is different than the standard one.
-from scipy_distutils.dist import Distribution
-
-from scipy_distutils.command import build
-from scipy_distutils.command import build_py
-from scipy_distutils.command import build_ext
-from scipy_distutils.command import build_clib
-from scipy_distutils.command import build_flib
-from scipy_distutils.command import sdist
-from scipy_distutils.command import install_data
-from scipy_distutils.command import install
-from scipy_distutils.command import install_headers
-
-def setup(**attr):
-    distclass = Distribution
-    cmdclass = {'build':            build.build,
-                'build_flib':       build_flib.build_flib,
-                'build_ext':        build_ext.build_ext,
-                'build_py':         build_py.build_py,                
-                'build_clib':       build_clib.build_clib,
-                'sdist':            sdist.sdist,
-                'install_data':     install_data.install_data,
-                'install':          install.install,
-                'install_headers':  install_headers.install_headers
-                }
-                      
-    new_attr = attr.copy()
-    if new_attr.has_key('cmdclass'):
-        cmdclass.update(new_attr['cmdclass'])        
-    new_attr['cmdclass'] = cmdclass
-    
-    if not new_attr.has_key('distclass'):
-        new_attr['distclass'] = distclass    
-    
-    return old_setup(**new_attr)
diff --git a/scipy_distutils/dist.py b/scipy_distutils/dist.py
deleted file mode 100644
index e54b35f..0000000
--- a/scipy_distutils/dist.py
+++ /dev/null
@@ -1,96 +0,0 @@
-from distutils.dist import *
-from distutils.dist import Distribution as OldDistribution
-from distutils.errors import DistutilsSetupError
-
-from types import *
-
-class Distribution (OldDistribution):
-    def __init__ (self, attrs=None):
-        self.fortran_libraries = None
-        OldDistribution.__init__(self, attrs)
-    
-    def has_f_libraries(self):
-        if self.fortran_libraries and len(self.fortran_libraries) > 0:
-            return 1
-        if hasattr(self,'_been_here_has_f_libraries'):
-            return 0
-        if self.has_ext_modules():
-            # extension module sources may contain fortran files,
-            # extract them to fortran_libraries.
-            for ext in self.ext_modules:
-                self.fortran_sources_to_flib(ext)
-        self._been_here_has_f_libraries = None
-        return self.fortran_libraries and len(self.fortran_libraries) > 0
-
-    def fortran_sources_to_flib(self, ext):
-        """
-        Extract fortran files from ext.sources and append them to
-        fortran_libraries item having the same name as ext.
-        """
-        sources = []
-        f_files = []
-        match = re.compile(r'.*[.](f90|f95|f77|for|ftn|f)\Z',re.I).match
-        for file in ext.sources:
-            if match(file):
-                f_files.append(file)
-            else:
-                sources.append(file)
-        if not f_files:
-            return
-
-        ext.sources = sources
-
-        if self.fortran_libraries is None:
-            self.fortran_libraries = []
-
-        name = ext.name
-        flib = None
-        for n,d in self.fortran_libraries:
-            if n == name:
-                flib = d
-                break
-        if flib is None:
-            flib = {'sources':[]}
-            self.fortran_libraries.append((name,flib))
-
-        flib['sources'].extend(f_files)
-
-    def check_data_file_list(self):
-        """Ensure that the list of data_files (presumably provided as a
-           command option 'data_files') is valid, i.e. it is a list of
-           2-tuples, where the tuples are (name, list_of_libraries).
-           Raise DistutilsSetupError if the structure is invalid anywhere;
-           just returns otherwise."""
-        print 'check_data_file_list'
-        if type(self.data_files) is not ListType:
-            raise DistutilsSetupError, \
-                  "'data_files' option must be a list of tuples"
-
-        for lib in self.data_files:
-            if type(lib) is not TupleType and len(lib) != 2:
-                raise DistutilsSetupError, \
-                      "each element of 'data_files' must a 2-tuple"
-
-            if type(lib[0]) is not StringType:
-                raise DistutilsSetupError, \
-                      "first element of each tuple in 'data_files' " + \
-                      "must be a string (the package with the data_file)"
-
-            if type(lib[1]) is not ListType:
-                raise DistutilsSetupError, \
-                      "second element of each tuple in 'data_files' " + \
-                      "must be a list of files."
-        # for lib
-
-    # check_data_file_list ()
-   
-    def get_data_files (self):
-        print 'get_data_files'
-        self.check_data_file_list()
-        filenames = []
-        
-        # Gets data files specified
-        for ext in self.data_files:
-            filenames.extend(ext[1])
-
-        return filenames
diff --git a/scipy_distutils/fftw_info.py b/scipy_distutils/fftw_info.py
deleted file mode 100755
index 0b64d6d..0000000
--- a/scipy_distutils/fftw_info.py
+++ /dev/null
@@ -1,18 +0,0 @@
-import os
-
-def get_fftw_info():
-    # FFTW (requires FFTW libraries to be previously installed)
-    double_libraries = ['fftw_threads','rfftw_threads','fftw','rfftw']
-    float_libraries = map(lambda x: 's'+x,double_libraries)
-
-    if os.name == 'nt':
-        fftw_dirs = ['c:\\fftw']
-    else:
-        base_dir = os.environ.get('FFTW')
-        if base_dir is None:
-            base_dir = os.environ['HOME']
-        fftw_dirs = [os.path.join(base_dir,'lib')]
-        double_libraries += ['pthread']
-        float_libraries += ['pthread']
-
-    return float_libraries, double_libraries, fftw_dirs
diff --git a/scipy_distutils/mingw32_support.py b/scipy_distutils/mingw32_support.py
deleted file mode 100644
index c42e4c5..0000000
--- a/scipy_distutils/mingw32_support.py
+++ /dev/null
@@ -1,103 +0,0 @@
-"""
-Support code for building Python extensions on Windows.
-
-    # NT stuff
-    # 1. Make sure libpython<version>.a exists for gcc.  If not, build it.
-    # 2. Force windows to use gcc (we're struggling with MSVC and g77 support) 
-    # 3. Force windows to use g77
-
-"""
-
-import os, sys
-import distutils.ccompiler
-
-# I'd really like to pull this out of scipy and make it part of distutils...
-import scipy_distutils.command.build_flib as build_flib
-
-
-if sys.platform == 'win32':
-    # NT stuff
-    # 1. Make sure libpython<version>.a exists for gcc.  If not, build it.
-    # 2. Force windows to use gcc (we're struggling with MSVC and g77 support) 
-    # 3. Force windows to use g77
-    
-    # 1.  Build libpython<version> from .lib and .dll if they don't exist.    
-    def import_library_exists():
-            """ on windows platforms, make sure a gcc import library exists
-            """
-            if sys.platform == 'win32':
-                lib_name = "libpython%d%d.a" % tuple(sys.version_info[:2])
-                full_path = os.path.join(sys.prefix,'libs',lib_name)
-                #print full_path
-                if not os.path.exists(full_path):
-                    return 0
-            return 1
-        
-    def build_import_library():
-        """ Build the import libraries for Mingw32-gcc on Windows
-        """
-        # lib2def lives in compiler
-        sys.path.append(os.path.join('.','compiler'))
-
-        import lib2def
-        #libfile, deffile = parse_cmd()
-        #if deffile == None:
-        #    deffile = sys.stdout
-        #else:
-        #    deffile = open(deffile, 'w')
-        lib_name = "python%d%d.lib" % tuple(sys.version_info[:2])    
-        lib_file = os.path.join(sys.prefix,'libs',lib_name)
-        def_name = "python%d%d.def" % tuple(sys.version_info[:2])    
-        def_file = os.path.join(sys.prefix,'libs',def_name)
-        nm_cmd = '%s %s' % (lib2def.DEFAULT_NM, lib_file)
-        nm_output = lib2def.getnm(nm_cmd)
-        dlist, flist = lib2def.parse_nm(nm_output)
-        lib2def.output_def(dlist, flist, lib2def.DEF_HEADER, open(def_file, 'w'))
-        
-        out_name = "libpython%d%d.a" % tuple(sys.version_info[:2])
-        out_file = os.path.join(sys.prefix,'libs',out_name)
-        dll_name = "python%d%d.dll" % tuple(sys.version_info[:2])
-        args = (dll_name,def_file,out_file)
-        cmd = 'dlltool --dllname %s --def %s --output-lib %s' % args
-        print cmd
-        success = not os.system(cmd)
-        # for now, fail silently
-        if not success:
-            print "WARNING: failed to build import library for gcc. "\
-                  "Linking will fail."
-        #if not success:
-        #    msg = "Couldn't find import library, and failed to build it."
-        #    raise DistutilsPlatformError, msg
-    
-    def set_windows_compiler(compiler):
-        distutils.ccompiler._default_compilers = (
-        
-            # Platform string mappings
-        
-            # on a cygwin built python we can use gcc like an ordinary UNIXish
-            # compiler
-            ('cygwin.*', 'unix'),
-            
-            # OS name mappings
-            ('posix', 'unix'),
-            ('nt', compiler),
-            ('mac', 'mwerks'),
-            
-            )                
-    def use_msvc():
-        set_windows_compiler('msvc')
-    
-    def use_gcc(): 
-        set_windows_compiler('mingw32')   
-    
-    def use_g77():
-        build_flib.all_compilers = [build_flib.gnu_fortran_compiler]    
-    
-    # 2. force the use of gcc on windows platform
-    use_gcc()
-    # 3. force the use of g77 on windows platform
-    use_g77()
-    if not import_library_exists():
-        build_import_library()
-
-    
diff --git a/scipy_distutils/misc_util.py b/scipy_distutils/misc_util.py
deleted file mode 100644
index f963332..0000000
--- a/scipy_distutils/misc_util.py
+++ /dev/null
@@ -1,197 +0,0 @@
-import os,sys,string
-
-def get_version(release_level='alpha', path='.', major=None):
-    """
-    Return version string calculated from CVS tree or found in
-    <path>/__version__.py. Automatically update <path>/__version__.py
-    if the version is changed.
-    An attempt is made to guarantee that version is increasing in
-    time. This function always succeeds. None is returned if no
-    version information is available.
-
-    Version string is in the form
-
-      <major>.<minor>.<micro>-<release_level>-<serial>
-
-    and its items have the following meanings:
-      serial - shows cumulative changes in all files in the CVS
-               repository
-      micro  - a number that is equivalent to the number of files
-      minor  - indicates the changes in micro value (files are added
-               or removed)
-      release_level - is alpha, beta, canditate, or final
-      major  - indicates changes in release_level.
-    """
-
-    release_level_map = {'alpha':0,
-                         'beta':1,
-                         'canditate':2,
-                         'final':3}
-    release_level_value = release_level_map.get(release_level)
-    if release_level_value is None:
-        print 'Warning: release_level=%s is not %s'\
-              % (release_level,
-                 string.join(release_level_map.keys(),','))
-
-    cwd = os.getcwd()
-    os.chdir(path)
-    try:
-        version_module = __import__('__version__')
-        reload(version_module)
-        old_version_info = version_module.version_info
-        old_version = version_module.version
-    except:
-        print sys.exc_value
-        old_version_info = None
-        old_version = None
-    os.chdir(cwd)
-
-    cvs_revs = get_cvs_version(path)
-    if cvs_revs is None:
-        return old_version
-
-    minor = 1
-    micro,serial = cvs_revs
-    if old_version_info is not None:
-        minor = old_version_info[1]
-        old_release_level_value = release_level_map.get(old_version_info[3])
-        if micro != old_version_info[2]: # files have beed added or removed
-            minor = minor + 1
-        if major is None:
-            major = old_version_info[0]
-            if old_release_level_value is not None:
-                if old_release_level_value > release_level_value:
-                    major = major + 1
-    if major is None:
-        major = 0
-
-    version_info = (major,minor,micro,release_level,serial)
-    version = '%s.%s.%s-%s-%s' % version_info
-
-    if version != old_version:
-        print 'updating version: %s -> %s'%(old_version,version)
-        version_file = os.path.abspath(os.path.join(path,'__version__.py'))
-        f = open(version_file,'w')
-        f.write('# This file is automatically updated with get_version\n'\
-                '# function from scipy_distutils.misc_utils.py\n'\
-                'version = %s\n'\
-                'version_info = %s\n'%(repr(version),version_info))
-        f.close()
-    return version
-
-def get_cvs_version(path):
-    """
-    Return two last cumulative revision numbers of a CVS tree starting
-    at <path>. The first number shows the number of files in the CVS
-    tree (this is often true, but not always) and the second number
-    characterizes the changes in these files.
-    If <path>/CVS/Entries is not existing then return None.
-    """
-    entries_file = os.path.join(path,'CVS','Entries')
-    if os.path.exists(entries_file):
-        rev1,rev2 = 0,0
-        for line in open(entries_file).readlines():
-            items = string.split(line,'/')
-            if items[0]=='D' and len(items)>1:
-                try:
-                    d1,d2 = get_cvs_version(os.path.join(path,items[1]))
-                except:
-                    d1,d2 = 0,0
-            elif items[0]=='' and len(items)>3 and items[1]!='__version__.py':
-                d1,d2 = map(eval,string.split(items[2],'.')[-2:])
-            else:
-                continue
-            rev1,rev2 = rev1+d1,rev2+d2
-        return rev1,rev2
-
-def get_path(mod_name):
-    """ This function makes sure installation is done from the
-        correct directory no matter if it is installed from the
-        command line or from another package or run_setup function.
-        
-    """
-    if mod_name == '__main__':
-        d = os.path.abspath('.')
-    elif mod_name == '__builtin__':
-        #builtin if/then added by Pearu for use in core.run_setup.        
-        d = os.path.dirname(os.path.abspath(sys.argv[0]))
-    else:
-        #import scipy_distutils.setup
-        mod = __import__(mod_name)
-        file = mod.__file__
-        d = os.path.dirname(os.path.abspath(file))
-    return d
-    
-def add_local_to_path(mod_name):
-    local_path = get_path(mod_name)
-    sys.path.insert(0,local_path)
-    
-def add_grandparent_to_path(mod_name):
-    local_path = get_path(mod_name)
-    gp_dir = os.path.split(local_path)[0]
-    sys.path.insert(0,gp_dir)
-
-def restore_path():
-    del sys.path[0]
-
-def append_package_dir_to_path(package_name):           
-    """ Search for a directory with package_name and append it to PYTHONPATH
-        
-        The local directory is searched first and then the parent directory.
-    """
-    # first see if it is in the current path
-    # then try parent.  If it isn't found, fail silently
-    # and let the import error occur.
-    
-    # not an easy way to clean up after this...
-    import os,sys
-    if os.path.exists(package_name):
-        sys.path.append(package_name)
-    elif os.path.exists(os.path.join('..',package_name)):
-        sys.path.append(os.path.join('..',package_name))
-
-def get_package_config(package_name):
-    """ grab the configuration info from the setup_xxx.py file
-        in a package directory.  The package directory is searched
-        from the current directory, so setting the path to the
-        setup.py file directory of the file calling this is usually
-        needed to get search the path correct.
-    """
-    append_package_dir_to_path(package_name)
-    mod = __import__('setup_'+package_name)
-    config = mod.configuration()
-    return config
-
-def package_config(primary,dependencies=[]):
-    """ Create a configuration dictionary ready for setup.py from
-        a list of primary and dependent package names.  Each
-        package listed must have a directory with the same name
-        in the current or parent working directory.  Further, it
-        should have a setup_xxx.py module within that directory that
-        has a configuration() file in it. 
-    """
-    config = []
-    config.extend([get_package_config(x) for x in primary])
-    config.extend([get_package_config(x) for x in dependencies])        
-    config_dict = merge_config_dicts(config)
-    return config_dict
-        
-list_keys = ['packages', 'ext_modules', 'data_files',
-             'include_dirs', 'libraries', 'fortran_libraries',
-                 'headers']
-dict_keys = ['package_dir']             
-
-def default_config_dict():
-    d={}
-    for key in list_keys: d[key] = []
-    for key in dict_keys: d[key] = {}
-    return d
-
-def merge_config_dicts(config_list):
-    result = default_config_dict()    
-    for d in config_list:
-        for key in list_keys:
-            result[key].extend(d.get(key,[]))
-        for key in dict_keys:
-            result[key].update(d.get(key,{}))
-    return result
diff --git a/scipy_distutils/setup.py b/scipy_distutils/setup.py
deleted file mode 100755
index 0457dfa..0000000
--- a/scipy_distutils/setup.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env python
-import os
-
-from distutils.core import setup
-from misc_util import get_path, get_version
-
-def install_package():
-    """ Install the scipy_distutils.  The dance with the current directory is done
-        to fool distutils into thinking it is run from the scipy_distutils directory
-        even if it was invoked from another script located in a different location.
-    """
-    path = get_path(__name__)
-    old_path = os.getcwd()
-    os.chdir(path)
-    try:
-
-        version = get_version('alpha')
-        print 'scipy_distutils',version
-
-        setup (name = "scipy_distutils",
-               version = version,
-               description = "Changes to distutils needed for SciPy -- mostly Fortran support",
-               author = "Travis Oliphant, Eric Jones, and Pearu Peterson",
-               author_email = "scipy-devel@scipy.org",
-               licence = "BSD Style",
-               url = 'http://www.scipy.org',
-               packages = ['scipy_distutils','scipy_distutils.command'],
-               package_dir = {'scipy_distutils':path}
-               )
-    finally:
-        os.chdir(old_path)
-    
-if __name__ == '__main__':
-    install_package()
diff --git a/scipy_distutils/setup_scipy_distutils.py b/scipy_distutils/setup_scipy_distutils.py
deleted file mode 100755
index 5baef98..0000000
--- a/scipy_distutils/setup_scipy_distutils.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import os
-from scipy_distutils.misc_util import get_path, default_config_dict
-
-def configuration(parent_package=''):
-    parent_path = parent_package
-    if parent_package:
-        parent_package += '.'
-    local_path = get_path(__name__)
-
-    config = default_config_dict()
-    package = 'scipy_distutils'
-    config['packages'].append(parent_package+package)
-    config['package_dir'][package] = local_path 
-    package = 'scipy_distutils.command'   
-    config['packages'].append(parent_package+package),
-    config['package_dir'][package] = os.path.join(local_path,'command')    
-    return config
diff --git a/scipy_test/__init__.py b/scipy_test/__init__.py
deleted file mode 100644
index 8d503eb..0000000
--- a/scipy_test/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from scipy_test import *
diff --git a/scipy_test/scipy_test.py b/scipy_test/scipy_test.py
deleted file mode 100755
index 74e2a7c..0000000
--- a/scipy_test/scipy_test.py
+++ /dev/null
@@ -1,273 +0,0 @@
-import os
-
-def remove_ignored_patterns(files,pattern):
-    from fnmatch import fnmatch
-    good_files = []
-    for file in files:
-        if not fnmatch(file,pattern):
-            good_files.append(file)
-    return good_files        
-    
-def remove_ignored_files(original,ignored_files,cur_dir):
-    """ This is actually expanded to do pattern matching.
-    
-    """
-    if not ignored_files: ignored_files = []
-    ignored_modules = map(lambda x: x+'.py',ignored_files)
-    ignored_packages = ignored_files[:]
-    # always ignore setup.py and __init__.py files
-    ignored_files = ['setup.py','setup_*.py','__init__.py']
-    ignored_files += ignored_modules + ignored_packages
-    ignored_files = map(lambda x,cur_dir=cur_dir: os.path.join(cur_dir,x),
-                        ignored_files)
-    #print 'ignored:', ignored_files    
-    #good_files = filter(lambda x,ignored = ignored_files: x not in ignored,
-    #                    original)
-    good_files = original
-    for pattern in ignored_files:
-        good_files = remove_ignored_patterns(good_files,pattern)
-        
-    return good_files
-                            
-def harvest_modules(package,ignore=None):
-    """* Retreive a list of all modules that live within a package.
-
-         Only retreive files that are immediate children of the
-         package -- do not recurse through child packages or
-         directories.  The returned list contains actual modules, not
-         just their names.
-    *"""
-    import os,sys
-
-    d,f = os.path.split(package.__file__)
-
-    # go through the directory and import every py file there.
-    import glob
-    common_dir = os.path.join(d,'*.py')
-    py_files = glob.glob(common_dir)
-    #py_files.remove(os.path.join(d,'__init__.py'))
-    #py_files.remove(os.path.join(d,'setup.py'))
-        
-    py_files = remove_ignored_files(py_files,ignore,d)
-    #print 'py_files:', py_files
-    try:
-        prefix = package.__name__
-    except:
-        prefix = ''
-                
-    all_modules = []
-    for file in py_files:
-        d,f = os.path.split(file)
-        base,ext =  os.path.splitext(f)        
-        mod = prefix + '.' + base
-        #print 'module: import ' + mod
-        try:
-            exec ('import ' + mod)
-            all_modules.append(eval(mod))
-        except:
-            print 'FAILURE to import ' + mod
-            output_exception()                
-        
-    return all_modules
-
-def harvest_packages(package,ignore = None):
-    """ Retreive a list of all sub-packages that live within a package.
-
-         Only retreive packages that are immediate children of this
-         package -- do not recurse through child packages or
-         directories.  The returned list contains actual package objects, not
-         just their names.
-    """
-    import os,sys
-    join = os.path.join
-
-    d,f = os.path.split(package.__file__)
-
-    common_dir = os.path.abspath(d)
-    all_files = os.listdir(d)
-    
-    all_files = remove_ignored_files(all_files,ignore,'')
-    #print 'all_files:', all_files
-    try:
-        prefix = package.__name__
-    except:
-        prefix = ''
-    all_packages = []
-    for directory in all_files:        
-        path = join(common_dir,directory)
-        if os.path.isdir(path) and \
-           os.path.exists(join(path,'__init__.py')):
-            sub_package = prefix + '.' + directory
-            #print 'sub-package import ' + sub_package
-            try:
-                exec ('import ' + sub_package)
-                all_packages.append(eval(sub_package))
-            except:
-                print 'FAILURE to import ' + sub_package
-                output_exception() 
-    return all_packages
-
-def harvest_modules_and_packages(package,ignore=None):
-    """ Retreive list of all packages and modules that live within a package.
-
-         See harvest_packages() and harvest_modules()
-    """
-    all = harvest_modules(package,ignore) + harvest_packages(package,ignore)
-    return all
-
-def harvest_test_suites(package,ignore = None):
-    import unittest
-    suites=[]
-    test_modules = harvest_modules_and_packages(package,ignore)
-    #for i in test_modules:
-    #    print i.__name__
-    for module in test_modules:
-        if hasattr(module,'test_suite'):
-            try:
-                suite = module.test_suite()
-                if suite:
-                    suites.append(suite)    
-                else:
-                    msg = "    !! FAILURE without error - shouldn't happen" + \
-                          module.__name__                
-                    print msg
-            except:
-                print '   !! FAILURE building test for ', module.__name__                
-                print '   ',
-                output_exception()            
-        else:
-            print 'No test suite found for ', module.__name__
-    total_suite = unittest.TestSuite(suites)
-    return total_suite
-
-def module_test(mod_name,mod_file):
-    """*
-
-    *"""
-    import os,sys,string
-    #print 'testing', mod_name
-    d,f = os.path.split(mod_file)
-
-    # add the tests directory to the python path
-    test_dir = os.path.join(d,'tests')
-    sys.path.append(test_dir)
-
-    # call the "test_xxx.test()" function for the appropriate
-    # module.
-
-    # This should deal with package naming issues correctly
-    short_mod_name = string.split(mod_name,'.')[-1]
-    test_module = 'test_' + short_mod_name
-    test_string = 'import %s;reload(%s);%s.test()' % \
-                  ((test_module,)*3)
-
-    # This would be better cause it forces a reload of the orginal
-    # module.  It doesn't behave with packages however.
-    #test_string = 'reload(%s);import %s;reload(%s);%s.test()' % \
-    #              ((mod_name,) + (test_module,)*3)
-    exec(test_string)
-
-    # remove test directory from python path.
-    sys.path = sys.path[:-1]
-
-def module_test_suite(mod_name,mod_file):
-    #try:
-        import os,sys,string
-        print ' creating test suite for:', mod_name
-        d,f = os.path.split(mod_file)
-
-        # add the tests directory to the python path
-        test_dir = os.path.join(d,'tests')
-        sys.path.append(test_dir)
-
-        # call the "test_xxx.test()" function for the appropriate
-        # module.
-
-        # This should deal with package naming issues correctly
-        short_mod_name = string.split(mod_name,'.')[-1]
-        test_module = 'test_' + short_mod_name
-        test_string = 'import %s;reload(%s);suite = %s.test_suite()' % ((test_module,)*3)
-        #print test_string
-        exec(test_string)
-
-        # remove test directory from python path.
-        sys.path = sys.path[:-1]
-        return suite
-    #except:
-    #    print '    !! FAILURE loading test suite from', test_module, ':'
-    #    print '   ',
-    #    output_exception()            
-
-
-# Utility function to facilitate testing.
-
-def assert_equal(actual,desired,err_msg='',verbose=1):
-    """ Raise an assertion if two items are not
-        equal.  I think this should be part of unittest.py
-    """
-    msg = '\nItems are not equal:\n' + err_msg
-    try:
-        if ( verbose and len(str(desired)) < 100 and len(str(actual)) ):
-            msg =  msg \
-                 + 'DESIRED: ' + str(desired) \
-                 + '\nACTUAL: ' + str(actual)
-    except:
-        msg =  msg \
-             + 'DESIRED: ' + str(desired) \
-             + '\nACTUAL: ' + str(actual)
-    assert desired == actual, msg
-
-def assert_almost_equal(actual,desired,decimal=7,err_msg='',verbose=1):
-    """ Raise an assertion if two items are not
-        equal.  I think this should be part of unittest.py
-    """
-    msg = '\nItems are not equal:\n' + err_msg
-    try:
-        if ( verbose and len(str(desired)) < 100 and len(str(actual)) ):
-            msg =  msg \
-                 + 'DESIRED: ' + str(desired) \
-                 + '\nACTUAL: ' + str(actual)
-    except:
-        msg =  msg \
-             + 'DESIRED: ' + str(desired) \
-             + '\nACTUAL: ' + str(actual)
-    assert round(abs(desired - actual),decimal) == 0, msg
-
-try:
-    # Numeric specific tests
-    from Numeric import *
-    from fastumath import *
-    
-    def assert_array_equal(x,y):
-        try:
-            assert(alltrue(equal(shape(x),shape(y))))
-            reduced = equal(x,y)
-            assert(alltrue(ravel(reduced)))
-        except ValueError:
-            print shape(x),shape(y)
-            raise ValueError, 'arrays are not equal'
-    
-    def assert_array_almost_equal(x,y,decimal=6):
-        try:
-            assert(alltrue(equal(shape(x),shape(y))))
-            reduced = equal(around(abs(x-y),decimal))
-            assert(alltrue(ravel(reduced)))
-        except ValueError:
-            print shape(x),shape(y)
-            print x, y
-            raise ValueError, 'arrays are not almost equal'
-except:
-    pass # Numeric not installed
-    
-import traceback,sys
-def output_exception():
-    try:
-        type, value, tb = sys.exc_info()
-        info = traceback.extract_tb(tb)
-        #this is more verbose
-        #traceback.print_exc()
-        filename, lineno, function, text = info[-1] # last line only
-        print "%s:%d: %s: %s (in %s)" %\
-              (filename, lineno, type.__name__, str(value), function)
-    finally:
-        type = value = tb = None # clean up
diff --git a/scipy_test/setup.py b/scipy_test/setup.py
deleted file mode 100755
index 31c37e7..0000000
--- a/scipy_test/setup.py
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env python
-from setup_scipy_test import install_package
-    
-if __name__ == '__main__':
-    install_package()
diff --git a/scipy_test/setup_scipy_test.py b/scipy_test/setup_scipy_test.py
deleted file mode 100755
index 9de5046..0000000
--- a/scipy_test/setup_scipy_test.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env python
-import os
-from distutils.core import setup
-from scipy_distutils.misc_util import get_path, default_config_dict 
-
-def configuration(parent_package=''):
-    parent_path = parent_package
-    if parent_package:
-        parent_package += '.'
-    local_path = get_path(__name__)
-
-    config = default_config_dict()
-    config['packages'].append(parent_package+'scipy_test')
-    config['package_dir'][parent_package+'scipy_test'] = local_path
-    return config
-       
-def install_package():
-    """ Install the scipy_test module.  The dance with the current directory 
-        is done to fool distutils into thinking it is run from the 
-        scipy_distutils directory even if it was invoked from another script
-        located in a different location.
-    """
-    path = get_path(__name__)
-    old_path = os.getcwd()
-    os.chdir(path)
-    try:
-        setup (name = "scipy_test",
-               version = "0.1",
-               description = "Supports testing of SciPy and other heirarchical packages",
-               author = "Eric Jones",
-               licence = "BSD Style",
-               url = 'http://www.scipy.org',
-               py_modules = ['scipy_test']
-               )
-    finally:
-        os.chdir(old_path)
-    
-if __name__ == '__main__':
-    install_package()
diff --git a/weave/blitz-20001213/blitz/applics.h b/weave/blitz-20001213/blitz/applics.h
deleted file mode 100644
index 4c6b259..0000000
--- a/weave/blitz-20001213/blitz/applics.h
+++ /dev/null
@@ -1,403 +0,0 @@
-/***************************************************************************
- * blitz/applics.h      Applicative template classes
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org    
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_APPLICS_H
-#define BZ_APPLICS_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_PROMOTE_H
- #include <blitz/promote.h>
-#endif
-
-#ifndef BZ_NUMTRAIT_H
- #include <blitz/numtrait.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// These base classes are included for no other reason than to keep
-// the applicative templates clustered together in a graphical
-// class browser.
-class ApplicativeTemplatesBase { };
-class TwoOperandApplicativeTemplatesBase : public ApplicativeTemplatesBase { };
-class OneOperandApplicativeTemplatesBase : public ApplicativeTemplatesBase { };
-
-template<class P_numtype1, class P_numtype2>
-class _bz_Add : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote; 
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x + y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_Subtract : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote;
-    typedef T_promote  T_numtype;
- 
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x - y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_Multiply : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x * y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_Divide : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x / y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_Mod : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x % y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_BitwiseXOR : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x ^ y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_BitwiseAnd : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x & y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_BitwiseOr : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x | y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_ShiftRight : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x >> y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_ShiftLeft : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1,T_numtype2) T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x << y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_Greater : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef _bz_bool   T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x > y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_Less : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef _bz_bool   T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x < y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_GreaterOrEqual : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef _bz_bool   T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x >= y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_LessOrEqual : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef _bz_bool   T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x <= y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_Equal : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef _bz_bool   T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x == y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_NotEqual : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef _bz_bool   T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x != y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_LogicalAnd : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef _bz_bool   T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x && y; }
-};
-
-template<class P_numtype1, class P_numtype2>
-class _bz_LogicalOr : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef _bz_bool   T_promote;
-    typedef T_promote  T_numtype;
-
-    static inline T_promote apply(P_numtype1 x, P_numtype2 y)
-    { return x || y; }
-};
-
-template<class P_numtype_in, class P_numtype_out>
-class _bz_Cast : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype_in T_numtype1;
-    typedef P_numtype_out T_promote;
-    typedef T_promote     T_numtype;
-
-    static inline P_numtype_out apply(P_numtype_in x)
-    { return P_numtype_out(x); }
-};
-
-template<class P_numtype>
-class _bz_LogicalNot : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype     T_numtype1;
-    typedef _bz_bool      T_promote;
-    typedef T_promote     T_numtype;
-
-    static inline P_numtype apply(P_numtype x)
-    { return !x; }
-};
-
-template<class P_numtype>
-class _bz_BitwiseNot : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype     T_numtype1;
-    typedef T_numtype1    T_promote;
-    typedef T_promote     T_numtype;
-
-    static inline P_numtype apply(P_numtype x)
-    { return ~x; }
-};
-
-/*****************************************************************************
- * Math Functions
- *****************************************************************************/
-
-// Applicative templates for these functions are defined in
-// <blitz/mathfunc.h>, which is included below:
-//
-// abs(i), labs(l)                     Absolute value
-// acos(d), acols(ld)                  Inverse cosine
-// acosh(d)                            Inverse hyperbolic cosine
-// asin(d), asinl(ld)                  Inverse sine
-// asinh(d)                            Inverse hyperbolic sine
-// atan(d), atanl(ld)                  Inverse tangent
-// atan2(d,d), atan2l(ld,ld)           Inverse tangent
-// atanh(d)                            Inverse hyperbolic tangent
-// cbrt(x)                             Cube root
-// ceil(d), ceill(ld)                  Smallest f-int not less than x
-// int class(d)                        Classification of x (FP_XXXXX)
-// cos(d), cosl(ld)                    Cosine
-// cosh(d), coshl(ld)                  Hyperbolic cosine
-// copysign(d,d)                       Return 1st arg with same sign as 2nd
-// drem(x,x)                           IEEE remainder
-// exp(d), expl(ld)                    Exponential
-// expm1(d)                            Exp(x)-1     
-// erf(d), erfl(ld)                    Error function
-// erfc(d), erfcl(ld)                  Complementary error function
-// fabs(d), fabsl(ld)                  Floating point absolute value
-// int finite(d)                       Nonzero if finite
-// floor(d), floor(ld)                 Largest f-int not greater than x
-// fmod(d,d), fmodl(ld,ld)             Floating point remainder
-// frexp(d, int* e)                    Break into mantissa/exponent  (*)
-// frexpl(ld, int* e)                  Break into mantissa/exponent  (*)
-// gammaFunc(d)                        Gamma function (** needs special 
-//                                     implementation using lgamma)
-// hypot(d,d)                          Hypotenuse: sqrt(x*x+y*y)
-// int ilogb(d)                        Integer unbiased exponent
-// int isnan(d)                        Nonzero if NaNS or NaNQ
-// int itrunc(d)                       Truncate and convert to integer
-// j0(d)                               Bessel function first kind, order 0
-// j1(d)                               Bessel function first kind, order 1
-// jn(int, double)                     Bessel function first kind, order i
-// ldexp(d,i), ldexpl(ld,i)            Compute d * 2^i
-// lgamma(d), lgammald(ld)             Log absolute gamma
-// log(d), logl(ld)                    Natural logarithm
-// logb(d)                             Unbiased exponent (IEEE)
-// log1p(d)                            Compute log(1 + x)
-// log10(d), log10l(ld)                Logarithm base 10
-// modf(d, int* i), modfl(ld, int* i)  Break into integral/fractional part
-// double nearest(double)              Nearest floating point integer
-// nextafter(d, d)                     Next representable neighbor of 1st
-//                                     in direction of 2nd
-// pow(d,d), pow(ld,ld)                Computes x ^ y
-// d remainder(d,d)                    IEEE remainder
-// d rint(d)                           Round to f-integer (depends on mode)
-// d rsqrt(d)                          Reciprocal square root
-// d scalb(d,d)                        Return x * (2^y)
-// sin(d), sinl(ld)                    Sine 
-// sinh(d), sinhl(ld)                  Hyperbolic sine
-// sqr(x)                              Return x * x
-// sqrt(d), sqrtl(ld)                  Square root
-// tan(d), tanl(ld)                    Tangent
-// tanh(d), tanhl(ld)                  Hyperbolic tangent
-// trunc(d)                            Nearest f-int in the direction of 0
-// unsigned uitrunc(d)                 Truncate and convert to unsigned
-// int unordered(d,d)                  Nonzero if comparison is unordered
-// y0(d)                               Bessel function 2nd kind, order 0
-// y1(d)                               Bessel function 2nd kind, order 1
-// yn(i,d)                             Bessel function 2nd kind, order d
-
-
-BZ_NAMESPACE_END
-
-#ifndef BZ_MATHFUNC_H
- #include <blitz/mathfunc.h>
-#endif
-
-#ifndef BZ_MATHF2_H
- #include <blitz/mathf2.h>
-#endif
-
-#endif // BZ_APPLICS_H
diff --git a/weave/blitz-20001213/blitz/array.h b/weave/blitz-20001213/blitz/array.h
deleted file mode 100644
index 7410117..0000000
--- a/weave/blitz-20001213/blitz/array.h
+++ /dev/null
@@ -1,2495 +0,0 @@
-/***************************************************************************
- * blitz/array.h      Declaration of the Array<P_numtype, N_rank> class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-/*
- * Wish list for array classes.
- *  - Arrays whose dimensions are unknown at compile time.
- *  - where()/elsewhere()/elsewhere() as in Dan Quinlan's implementation
- *  - block reduction operations
- *  - conversion to/from matrix & vector
- *  - apply(T func(T))
- *  - apply(T func(const T&))
- *  - apply<T func(T)>
- */
-
-#ifndef BZ_ARRAY_H
-#define BZ_ARRAY_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_MEMBLOCK_H
- #include <blitz/memblock.h>
-#endif
-
-#ifndef BZ_RANGE_H
- #include <blitz/range.h>
-#endif
-
-#ifndef BZ_TINYVEC_H
- #include <blitz/tinyvec.h>
-#endif
-
-#ifndef BZ_TRAVERSAL_H
- #include <blitz/traversal.h>
-#endif
-
-#ifndef BZ_INDEXEXPR_H
- #include <blitz/indexexpr.h>
-#endif
-
-#ifndef BZ_PRETTYPRINT_H
- #include <blitz/prettyprint.h>
-#endif
-
-#include <blitz/array/slice.h>     // Subarrays and slicing
-#include <blitz/array/map.h>       // Tensor index notation
-#include <blitz/array/multi.h>     // Multicomponent arrays
-#include <blitz/array/domain.h>    // RectDomain class
-#include <blitz/array/storage.h>   // GeneralArrayStorage
-
-
-BZ_NAMESPACE(blitz)
-
-/*
- * Forward declarations
- */
-
-template<class T_numtype, int N_rank>
-class ArrayIterator;
-
-template<class T_numtype, int N_rank>
-class ConstArrayIterator;
-
-template<class T_numtype, int N_rank>
-class FastArrayIterator;
-
-template<class P_expr>
-class _bz_ArrayExpr;
-
-template<class T_array, class T_index>
-class IndirectArray;
-
-class _bz_endTag;
-
-
-
-/*
- * Declaration of class Array
- */
-
-// NEEDS_WORK: Array should inherit protected from MemoryBlockReference.
-// To make this work, need to expose MemoryBlockReference::numReferences()
-// and make Array<P,N2> a friend of Array<P,N> for slicing.
-
-template<class P_numtype, int N_rank>
-class Array : public MemoryBlockReference<P_numtype> 
-#ifdef BZ_NEW_EXPRESSION_TEMPLATES
-    , public ETBase<Array<P_numtype,N_rank> >
-#endif
-{
-
-public:
-    //////////////////////////////////////////////
-    // Public Types
-    //////////////////////////////////////////////
-
-    /*
-     * T_numtype  is the numeric type stored in the array.
-     * T_index    is a vector type which can be used to access elements
-     *            of many-dimensional arrays.
-     * T_array    is the array type itself -- Array<T_numtype, N_rank>
-     * T_iterator is a a fast iterator for the array, used for expression
-     *            templates
-     * iterator   is a STL-style iterator
-     * const_iterator is an STL-style const iterator
-     */
-
-    typedef P_numtype                T_numtype;
-    typedef TinyVector<int, N_rank>  T_index;
-    typedef Array<T_numtype, N_rank> T_array;
-    typedef FastArrayIterator<T_numtype, N_rank> T_iterator;
-
-    typedef ArrayIterator<T_numtype,N_rank> iterator;
-    typedef ConstArrayIterator<T_numtype,N_rank> const_iterator;
-
-    enum { _bz_rank = N_rank };
-
-    //////////////////////////////////////////////
-    // Constructors                             //
-    //////////////////////////////////////////////
-
-    
-    /*
-     * Construct an array from an array expression.
-     */
-
-    template<class T_expr>
-    _bz_explicit Array(_bz_ArrayExpr<T_expr> expr);
-
-    /*
-     * Any missing length arguments will have their value taken from the
-     * last argument.  For example,
-     *   Array<int,3> A(32,64);
-     * will create a 32x64x64 array.  This is handled by setupStorage().
-     */
-
-    Array(GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        length_ = 0;
-        stride_ = 0;
-        zeroOffset_ = 0;
-    }
-
-    _bz_explicit Array(int length0, 
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        length_[0] = length0;
-        setupStorage(0);
-    }
-
-    Array(int length0, int length1,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 2);
-        TAU_TYPE_STRING(p1, "Array<T,N>::Array() [T="
-            + CT(T_numtype) + ",N=" + CT(N_rank) + "]");
-        TAU_PROFILE(p1, "void (int,int)", TAU_BLITZ);
-
-        length_[0] = length0;
-        length_[1] = length1;
-        setupStorage(1);
-    }
-
-    Array(int length0, int length1, int length2,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 3);
-        length_[0] = length0;
-        length_[1] = length1;
-        length_[2] = length2;
-        setupStorage(2);
-    }
-
-    Array(int length0, int length1, int length2, int length3,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 4);
-        length_[0] = length0;
-        length_[1] = length1;
-        length_[2] = length2;
-        length_[3] = length3;
-        setupStorage(3);
-    }
-
-    Array(int length0, int length1, int length2, int length3, int length4,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 5);
-        length_[0] = length0;
-        length_[1] = length1;
-        length_[2] = length2;
-        length_[3] = length3;
-        length_[4] = length4;
-        setupStorage(4);
-    }
-
-    Array(int length0, int length1, int length2, int length3, int length4,
-        int length5,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 6);
-        length_[0] = length0;
-        length_[1] = length1;
-        length_[2] = length2;
-        length_[3] = length3;
-        length_[4] = length4;
-        length_[5] = length5;
-        setupStorage(5);
-    }
-
-    Array(int length0, int length1, int length2, int length3, int length4,
-        int length5, int length6,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 7);
-        length_[0] = length0;
-        length_[1] = length1;
-        length_[2] = length2;
-        length_[3] = length3;
-        length_[4] = length4;
-        length_[5] = length5;
-        length_[6] = length6;
-        setupStorage(6);
-    }
-
-    Array(int length0, int length1, int length2, int length3, int length4,
-        int length5, int length6, int length7,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 8);
-        length_[0] = length0;
-        length_[1] = length1;
-        length_[2] = length2;
-        length_[3] = length3;
-        length_[4] = length4;
-        length_[5] = length5;
-        length_[6] = length6;
-        length_[7] = length7;
-        setupStorage(7);
-    }
-
-    Array(int length0, int length1, int length2, int length3, int length4,
-        int length5, int length6, int length7, int length8,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 9);
-        length_[0] = length0;
-        length_[1] = length1;
-        length_[2] = length2;
-        length_[3] = length3;
-        length_[4] = length4;
-        length_[5] = length5;
-        length_[6] = length6;
-        length_[7] = length7;
-        length_[8] = length8;
-        setupStorage(8);
-    }
-
-    Array(int length0, int length1, int length2, int length3, int length4,
-        int length5, int length6, int length7, int length8, int length9,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 10);
-        length_[0] = length0;
-        length_[1] = length1;
-        length_[2] = length2;
-        length_[3] = length3;
-        length_[4] = length4;
-        length_[5] = length5;
-        length_[6] = length6;
-        length_[7] = length7;
-        length_[8] = length8;
-        length_[9] = length9;
-        setupStorage(9);
-    }
-
-    Array(int length0, int length1, int length2, int length3, int length4,
-        int length5, int length6, int length7, int length8, int length9,
-        int length10,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(N_rank >= 11);
-        length_[0] = length0;
-        length_[1] = length1;
-        length_[2] = length2;
-        length_[3] = length3;
-        length_[4] = length4;
-        length_[5] = length5;
-        length_[6] = length6;
-        length_[7] = length7;
-        length_[8] = length8;
-        length_[9] = length9;
-        length_[10] = length10;
-        setupStorage(10);
-    }
-
-    /*
-     * Construct an array from an existing block of memory.  Ownership
-     * is not acquired (this is provided for backwards compatibility).
-     */
-    Array(T_numtype* _bz_restrict dataFirst, TinyVector<int, N_rank> shape,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-      : MemoryBlockReference<T_numtype>(product(shape), dataFirst, 
-          neverDeleteData),
-        storage_(storage)
-    {
-        BZPRECONDITION(dataFirst != 0);
-
-        length_ = shape;
-        computeStrides();
-        data_ += zeroOffset_;
-    }
-
-    /*
-     * Construct an array from an existing block of memory, with a
-     * given set of strides.  Ownership is not acquired (i.e. the memory
-     * block will not be freed by Blitz++).
-     */
-    Array(T_numtype* _bz_restrict dataFirst, TinyVector<int, N_rank> shape,
-        TinyVector<int, N_rank> stride, 
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-      : MemoryBlockReference<T_numtype>(product(shape), dataFirst, 
-          neverDeleteData),
-        storage_(storage)
-    {
-        BZPRECONDITION(dataFirst != 0);
-
-        length_ = shape;
-        stride_ = stride;
-        calculateZeroOffset();
-        data_ += zeroOffset_;
-    }
-
-    /*
-     * Construct an array from an existing block of memory.
-     */
-    Array(T_numtype* _bz_restrict dataFirst, TinyVector<int, N_rank> shape,
-        preexistingMemoryPolicy deletionPolicy,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-      : MemoryBlockReference<T_numtype>(product(shape), dataFirst, 
-            deletionPolicy),
-        storage_(storage)
-    {
-        BZPRECONDITION(dataFirst != 0);
-
-        length_ = shape;
-        computeStrides();
-        data_ += zeroOffset_;
-
-        if (deletionPolicy == duplicateData)
-            reference(copy());
-    }
-
-    /*
-     * Construct an array from an existing block of memory, with a
-     * given set of strides.  
-     */
-    Array(T_numtype* _bz_restrict dataFirst, TinyVector<int, N_rank> shape,
-        TinyVector<int, N_rank> stride,
-        preexistingMemoryPolicy deletionPolicy,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-      : MemoryBlockReference<T_numtype>(product(shape), dataFirst, 
-          deletionPolicy),
-        storage_(storage)
-    {
-        BZPRECONDITION(dataFirst != 0);
-
-        length_ = shape;
-        stride_ = stride;
-        calculateZeroOffset();
-        data_ += zeroOffset_;
-
-        if (deletionPolicy == duplicateData)
-            reference(copy());
-    }
-
-    /*
-     * This constructor takes an extent (length) vector and storage format.
-     */
-
-    Array(const TinyVector<int, N_rank>& extent, 
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        length_ = extent;
-        setupStorage(N_rank - 1);
-    }
-
-    /*
-     * This construct takes a vector of bases (lbounds) and a vector of
-     * extents.
-     */
-
-    Array(const TinyVector<int, N_rank>& lbounds,
-        const TinyVector<int, N_rank>& extent,
-        const GeneralArrayStorage<N_rank>& storage 
-           = GeneralArrayStorage<N_rank>());
-
-    /*
-     * These constructors allow arbitrary bases (starting indices) to be set.
-     * e.g. Array<int,2> A(Range(10,20), Range(20,30))
-     * will create an 11x11 array whose indices are 10..20 and 20..30
-     */
-    Array(Range r0, 
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        setupStorage(0);
-    }
-
-    Array(Range r0, Range r1,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() && 
-            r1.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-
-        setupStorage(1);
-    }
-
-    Array(Range r0, Range r1, Range r2,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() &&
-            r1.isAscendingContiguous() && r2.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-        length_[2] = r2.length();
-        storage_.setBase(2, r2.first());
-
-        setupStorage(2);
-    }
-
-    Array(Range r0, Range r1, Range r2, Range r3,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() &&
-            r1.isAscendingContiguous() && r2.isAscendingContiguous()
-            && r3.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-        length_[2] = r2.length();
-        storage_.setBase(2, r2.first());
-        length_[3] = r3.length();
-        storage_.setBase(3, r3.first());
-
-        setupStorage(3);
-    }
-
-    Array(Range r0, Range r1, Range r2, Range r3, Range r4,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() &&
-            r1.isAscendingContiguous() && r2.isAscendingContiguous()
-            && r3.isAscendingContiguous() && r4.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-        length_[2] = r2.length();
-        storage_.setBase(2, r2.first());
-        length_[3] = r3.length();
-        storage_.setBase(3, r3.first());
-        length_[4] = r4.length();
-        storage_.setBase(4, r4.first());
-
-        setupStorage(4);
-    }
-
-    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() &&
-            r1.isAscendingContiguous() && r2.isAscendingContiguous()
-            && r3.isAscendingContiguous() && r4.isAscendingContiguous()
-            && r5.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-        length_[2] = r2.length();
-        storage_.setBase(2, r2.first());
-        length_[3] = r3.length();
-        storage_.setBase(3, r3.first());
-        length_[4] = r4.length();
-        storage_.setBase(4, r4.first());
-        length_[5] = r5.length();
-        storage_.setBase(5, r5.first());
-
-        setupStorage(5);
-    }
-
-    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
-        Range r6,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() &&
-            r1.isAscendingContiguous() && r2.isAscendingContiguous()
-            && r3.isAscendingContiguous() && r4.isAscendingContiguous()
-            && r5.isAscendingContiguous() && r6.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-        length_[2] = r2.length();
-        storage_.setBase(2, r2.first());
-        length_[3] = r3.length();
-        storage_.setBase(3, r3.first());
-        length_[4] = r4.length();
-        storage_.setBase(4, r4.first());
-        length_[5] = r5.length();
-        storage_.setBase(5, r5.first());
-        length_[6] = r6.length();
-        storage_.setBase(6, r6.first());
-
-        setupStorage(6);
-    }
-
-    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
-        Range r6, Range r7,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() &&
-            r1.isAscendingContiguous() && r2.isAscendingContiguous()
-            && r3.isAscendingContiguous() && r4.isAscendingContiguous()
-            && r5.isAscendingContiguous() && r6.isAscendingContiguous()
-            && r7.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-        length_[2] = r2.length();
-        storage_.setBase(2, r2.first());
-        length_[3] = r3.length();
-        storage_.setBase(3, r3.first());
-        length_[4] = r4.length();
-        storage_.setBase(4, r4.first());
-        length_[5] = r5.length();
-        storage_.setBase(5, r5.first());
-        length_[6] = r6.length();
-        storage_.setBase(6, r6.first());
-        length_[7] = r7.length();
-        storage_.setBase(7, r7.first());
-
-        setupStorage(7);
-    }
-
-    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
-        Range r6, Range r7, Range r8,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() &&
-            r1.isAscendingContiguous() && r2.isAscendingContiguous()
-            && r3.isAscendingContiguous() && r4.isAscendingContiguous()
-            && r5.isAscendingContiguous() && r6.isAscendingContiguous()
-            && r7.isAscendingContiguous() && r8.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-        length_[2] = r2.length();
-        storage_.setBase(2, r2.first());
-        length_[3] = r3.length();
-        storage_.setBase(3, r3.first());
-        length_[4] = r4.length();
-        storage_.setBase(4, r4.first());
-        length_[5] = r5.length();
-        storage_.setBase(5, r5.first());
-        length_[6] = r6.length();
-        storage_.setBase(6, r6.first());
-        length_[7] = r7.length();
-        storage_.setBase(7, r7.first());
-        length_[8] = r8.length();
-        storage_.setBase(8, r8.first());
-
-        setupStorage(8);
-    }
-
-    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
-        Range r6, Range r7, Range r8, Range r9,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() &&
-            r1.isAscendingContiguous() && r2.isAscendingContiguous()
-            && r3.isAscendingContiguous() && r4.isAscendingContiguous()
-            && r5.isAscendingContiguous() && r6.isAscendingContiguous()
-            && r7.isAscendingContiguous() && r8.isAscendingContiguous()
-            && r9.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-        length_[2] = r2.length();
-        storage_.setBase(2, r2.first());
-        length_[3] = r3.length();
-        storage_.setBase(3, r3.first());
-        length_[4] = r4.length();
-        storage_.setBase(4, r4.first());
-        length_[5] = r5.length();
-        storage_.setBase(5, r5.first());
-        length_[6] = r6.length();
-        storage_.setBase(6, r6.first());
-        length_[7] = r7.length();
-        storage_.setBase(7, r7.first());
-        length_[8] = r8.length();
-        storage_.setBase(8, r8.first());
-        length_[9] = r9.length();
-        storage_.setBase(9, r9.first());
-
-        setupStorage(9);
-    }
-
-    Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
-        Range r6, Range r7, Range r8, Range r9, Range r10,
-        GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
-        : storage_(storage)
-    {
-        BZPRECONDITION(r0.isAscendingContiguous() &&
-            r1.isAscendingContiguous() && r2.isAscendingContiguous()
-            && r3.isAscendingContiguous() && r4.isAscendingContiguous()
-            && r5.isAscendingContiguous() && r6.isAscendingContiguous()
-            && r7.isAscendingContiguous() && r8.isAscendingContiguous()
-            && r9.isAscendingContiguous() && r10.isAscendingContiguous());
-
-        length_[0] = r0.length();
-        storage_.setBase(0, r0.first());
-        length_[1] = r1.length();
-        storage_.setBase(1, r1.first());
-        length_[2] = r2.length();
-        storage_.setBase(2, r2.first());
-        length_[3] = r3.length();
-        storage_.setBase(3, r3.first());
-        length_[4] = r4.length();
-        storage_.setBase(4, r4.first());
-        length_[5] = r5.length();
-        storage_.setBase(5, r5.first());
-        length_[6] = r6.length();
-        storage_.setBase(6, r6.first());
-        length_[7] = r7.length();
-        storage_.setBase(7, r7.first());
-        length_[8] = r8.length();
-        storage_.setBase(8, r8.first());
-        length_[9] = r9.length();
-        storage_.setBase(9, r9.first());
-        length_[10] = r10.length();
-        storage_.setBase(10, r10.first());
-
-        setupStorage(10);
-    }
-
-    /*
-     * Create a reference of another array
-     */
-    Array(const Array<T_numtype, N_rank>& array)
-    {
-        // NEEDS_WORK: this const_cast is a tad ugly.
-        reference(const_cast<T_array&>(array));
-    }
-
-    /*
-     * These constructors are used for creating interlaced arrays (see
-     * <blitz/arrayshape.h>
-     */
-    Array(const TinyVector<int,N_rank-1>& shape,
-        int lastExtent, const GeneralArrayStorage<N_rank>& storage);
-    //Array(const TinyVector<Range,N_rank-1>& shape,
-    //    int lastExtent, const GeneralArrayStorage<N_rank>& storage);
-
-    /*
-     * These constructors make the array a view of a subportion of another
-     * array.  If there fewer than N_rank Range arguments provided, no
-     * slicing is performed in the unspecified ranks.
-     * e.g. Array<int,3> A(20,20,20);
-     *      Array<int,3> B(A, Range(5,15));
-     * is equivalent to:
-     *      Array<int,3> B(A, Range(5,15), Range::all(), Range::all());
-     */
-    Array(Array<T_numtype, N_rank>& array, Range r0)
-    {
-        constructSubarray(array, r0);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1)
-    {
-        constructSubarray(array, r0, r1);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2)
-    {
-        constructSubarray(array, r0, r1, r2);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2,
-        Range r3)
-    {
-        constructSubarray(array, r0, r1, r2, r3);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2,
-        Range r3, Range r4)
-    {
-        constructSubarray(array, r0, r1, r2, r3, r4);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2,
-        Range r3, Range r4, Range r5)
-    {
-        constructSubarray(array, r0, r1, r2, r3, r4, r5);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2,
-        Range r3, Range r4, Range r5, Range r6)
-    {
-        constructSubarray(array, r0, r1, r2, r3, r4, r5, r6);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2,
-        Range r3, Range r4, Range r5, Range r6, Range r7)
-    {
-        constructSubarray(array, r0, r1, r2, r3, r4, r5, r6, r7);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2,
-        Range r3, Range r4, Range r5, Range r6, Range r7, Range r8)
-    {
-        constructSubarray(array, r0, r1, r2, r3, r4, r5, r6, r7, r8);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2,
-        Range r3, Range r4, Range r5, Range r6, Range r7, Range r8, Range r9)
-    {
-        constructSubarray(array, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2,
-        Range r3, Range r4, Range r5, Range r6, Range r7, Range r8, Range r9,
-        Range r10)
-    {
-        constructSubarray(array, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10);
-    }
-
-    Array(Array<T_numtype, N_rank>& array, 
-        const RectDomain<N_rank>& subdomain)
-    {
-        constructSubarray(array, subdomain);
-    }
-
-    /*
-     * This constructor is invoked by the operator()'s which take
-     * a combination of integer and Range arguments.  It's not intended
-     * for end-user use.
-     */
-    template<int N_rank2, class R0, class R1, class R2, class R3, class R4,
-        class R5, class R6, class R7, class R8, class R9, class R10>
-    Array(Array<T_numtype,N_rank2>& array, R0 r0, R1 r1, R2 r2,
-        R3 r3, R4 r4, R5 r5, R6 r6, R7 r7, R8 r8, R9 r9, R10 r10)
-    {
-        constructSlice(array, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10);
-    }
-
-    //////////////////////////////////////////////
-    // Member functions
-    //////////////////////////////////////////////
-
-    const TinyVector<int, N_rank>&    base() const
-    { return storage_.base(); }
-
-    int                               base(int rank) const
-    { return storage_.base(rank); }
-
-    iterator                          begin() 
-    { return iterator(*this); }
-
-    const_iterator                    begin() const
-    { return const_iterator(*this); }
-
-    T_iterator                        beginFast() const
-    { return T_iterator(*this); }
-
-    // Deprecated: now extractComponent(...)
-    template<class T_numtype2>
-    Array<T_numtype2,N_rank>          chopComponent(T_numtype2 a, int compNum,
-                                          int numComponents) const
-    { return extractComponent(a, compNum, numComponents); }
-
-    int                               cols() const
-    { return length_[1]; }
-
-    int                               columns() const
-    { return length_[1]; }
-
-    T_array                           copy() const;
-
-    // data_ always refers to the point (0,0,...,0) which may
-    // not be in the array if the base is not zero in each rank.
-    // These data() routines return a pointer to the first
-    // element in the array (but note that it may not be
-    // stored first in memory if some ranks are stored descending).
-
-    const T_numtype* _bz_restrict     data() const
-    { return data_ + dot(storage_.base(), stride_); }
-
-    T_numtype* _bz_restrict           data() 
-    { return data_ + dot(storage_.base(), stride_); }
-
-    // These dataZero() routines refer to the point (0,0,...,0)
-    // which may not be in the array if the bases are nonzero.
-    
-    const T_numtype* _bz_restrict     dataZero() const
-    { return data_; }
-
-    T_numtype* _bz_restrict           dataZero()
-    { return data_; }
-
-    // These dataFirst() routines refer to the element in the
-    // array which falls first in memory.
-    
-    const T_numtype* _bz_restrict     dataFirst() const
-    {
-        return data_ + dot(storage_.base() 
-            + (1 - storage_.ascendingFlag()) * (length_ - 1), stride_);
-    }
-
-    T_numtype* _bz_restrict           dataFirst()
-    {
-        return data_ + dot(storage_.base()
-            + (1 - storage_.ascendingFlag()) * (length_ - 1), stride_);
-    }
-
-    int                               depth() const
-    { return length_[2]; }
-
-    int                               dimensions() const
-    { return N_rank; }
-
-    RectDomain<N_rank>                domain() const
-    {
-        return RectDomain<N_rank>(lbound(), ubound());
-    }
-
-    void dumpStructureInformation(ostream& os = cout) const;
-
-    iterator                          end()
-    {
-        return iterator(*this, _bz_endTag());
-    }
-
-    const_iterator                    end() const
-    {
-        return const_iterator(*this, _bz_endTag());
-    }
-
-    int                               extent(int rank) const
-    { return length_[rank]; }
-
-    const TinyVector<int,N_rank>&     extent() const
-    { return length_; }
-
-    template<class T_numtype2>
-    Array<T_numtype2,N_rank>          extractComponent(T_numtype2, int compNum,
-                                          int numComponents) const;
-
-    void                              free() 
-    {
-        changeToNullBlock();
-        length_ = 0;
-    }
- 
-    _bz_bool                          isMajorRank(int rank) const
-    { return storage_.ordering(rank) == 0; }
-
-    _bz_bool                          isMinorRank(int rank) const
-    { return storage_.ordering(rank) != 0; }
-
-    _bz_bool                          isRankStoredAscending(int rank) const
-    { return storage_.isRankStoredAscending(rank); }
-
-    _bz_bool                          isStorageContiguous() const;
-
-    int                               lbound(int rank) const
-    { return base(rank); }
-
-    TinyVector<int,N_rank>            lbound() const
-    {
-        return base();
-    }
-
-    int                               length(int rank) const
-    { return length_[rank]; }
-
-    const TinyVector<int, N_rank>&    length() const
-    { return length_; }
-
-    void                              makeUnique();
-
-    int                               numElements() const
-    { return product(length_); }
-
-    // NEEDS_WORK -- Expose the numReferences() method
-    // MemoryBlockReference<T_numtype>::numReferences;
-
-    // The storage_.ordering_ array is a list of dimensions from
-    // the most minor (stride 1) to major dimension.  Generally,
-    // ordering(0) will return the dimension which has the smallest
-    // stride, and ordering(N_rank-1) will return the dimension with
-    // the largest stride.
-    int                               ordering(int storageRankIndex) const
-    { return storage_.ordering(storageRankIndex); }
-
-    const TinyVector<int, N_rank>&    ordering() const
-    { return storage_.ordering(); }
-
-    void                              transposeSelf(int r0, int r1, int r2=0, 
-        int r3=0, int r4=0, int r5=0, int r6=0, int r7=0, int r8=0, int 
-        r9=0, int r10=0);
-    T_array                           transpose(int r0, int r1, int r2=0,
-        int r3=0, int r4=0, int r5=0, int r6=0, int r7=0, int r8=0, int
-        r9=0, int r10=0);
-
-    int                               rank() const
-    { return N_rank; }
-
-    void                              reference(const T_array&);
-
-    // Added by Derrick Bass
-    T_array                           reindex(const TinyVector<int,N_rank>&);
-    void                              reindexSelf(const 
-                                                TinyVector<int,N_rank>&);
-
-    void                              resize(int extent);
-    void                              resize(int extent1, int extent2);
-    void                              resize(int extent1, int extent2,
-                                        int extent3);
-    void                              resize(int extent1, int extent2,
-                                        int extent3, int extent4);
-    void                              resize(int extent1, int extent2,
-                                        int extent3, int extent4, int extent5);
-    void                              resize(int extent1, int extent2,
-                                        int extent3, int extent4, int extent5,
-                                        int extent6);
-    void                              resize(int extent1, int extent2,
-                                        int extent3, int extent4, int extent5,
-                                        int extent6, int extent7);
-    void                              resize(int extent1, int extent2,
-                                        int extent3, int extent4, int extent5,
-                                        int extent6, int extent7, int extent8);
-    void                              resize(int extent1, int extent2,
-                                        int extent3, int extent4, int extent5,
-                                        int extent6, int extent7, int extent8,
-                                        int extent9);
-    void                              resize(int extent1, int extent2,
-                                        int extent3, int extent4, int extent5,
-                                        int extent6, int extent7, int extent8,
-                                        int extent9, int extent10);
-    void                              resize(int extent1, int extent2,
-                                        int extent3, int extent4, int extent5,
-                                        int extent6, int extent7, int extent8,
-                                        int extent9, int extent10, 
-                                        int extent11);
-
-
-    void                              resize(Range r1);
-    void                              resize(Range r1, Range r2);
-    void                              resize(Range r1, Range r2, Range r3);
-    void                              resize(Range r1, Range r2, Range r3,
-                                        Range r4);
-    void                              resize(Range r1, Range r2, Range r3,
-                                        Range r4, Range r5);
-    void                              resize(Range r1, Range r2, Range r3,
-                                        Range r4, Range r5, Range r6);
-    void                              resize(Range r1, Range r2, Range r3,
-                                        Range r4, Range r5, Range r6,
-                                        Range r7);
-    void                              resize(Range r1, Range r2, Range r3,
-                                        Range r4, Range r5, Range r6,
-                                        Range r7, Range r8);
-    void                              resize(Range r1, Range r2, Range r3,
-                                        Range r4, Range r5, Range r6,
-                                        Range r7, Range r8, Range r9);
-    void                              resize(Range r1, Range r2, Range r3,
-                                        Range r4, Range r5, Range r6,
-                                        Range r7, Range r8, Range r9, 
-                                        Range r10);
-    void                              resize(Range r1, Range r2, Range r3,
-                                        Range r4, Range r5, Range r6,
-                                        Range r7, Range r8, Range r9, 
-                                        Range r10, Range r11);
-
-    void                              resize(const TinyVector<int,N_rank>&);
- 
-
-    void                              resizeAndPreserve(int extent);
-    void                              resizeAndPreserve(int extent1, 
-                                        int extent2);
-    void                              resizeAndPreserve(int extent1, 
-                                        int extent2, int extent3);
-    void                              resizeAndPreserve(int extent1,
-                                        int extent2, int extent3, int extent4);
-    void                              resizeAndPreserve(int extent1,
-                                        int extent2, int extent3, int extent4,
-                                        int extent5);
-    void                              resizeAndPreserve(int extent1,
-                                        int extent2, int extent3, int extent4,
-                                        int extent5, int extent6);
-    void                              resizeAndPreserve(int extent1,
-                                        int extent2, int extent3, int extent4,
-                                        int extent5, int extent6, int extent7);
-    void                              resizeAndPreserve(int extent1,
-                                        int extent2, int extent3, int extent4,
-                                        int extent5, int extent6, int extent7,
-                                        int extent8);
-    void                              resizeAndPreserve(int extent1,
-                                        int extent2, int extent3, int extent4,
-                                        int extent5, int extent6, int extent7,
-                                        int extent8, int extent9);
-    void                              resizeAndPreserve(int extent1,
-                                        int extent2, int extent3, int extent4,
-                                        int extent5, int extent6, int extent7,
-                                        int extent8, int extent9, 
-                                        int extent10);
-    void                              resizeAndPreserve(int extent1,
-                                        int extent2, int extent3, int extent4,
-                                        int extent5, int extent6, int extent7,
-                                        int extent8, int extent9, int extent10,
-                                        int extent11);
-
-    // NEEDS_WORK -- resizeAndPreserve(Range,...)
-    // NEEDS_WORK -- resizeAndPreserve(const TinyVector<int,N_rank>&);
-    // NEEDS_WORK -- resizeAndPreserve(const Domain<N_rank>&);
-
-    T_array                           reverse(int rank);
-    void                              reverseSelf(int rank);
-
-    int                               rows() const
-    { return length_[0]; }
-
-    void                              slice(int rank, Range r);
-
-    const TinyVector<int, N_rank>&    shape() const
-    { return length_; }
-
-    int                               size() const
-    { return numElements(); }
-
-    const TinyVector<int, N_rank>&    stride() const
-    { return stride_; }
-
-    int                               stride(int rank) const
-    { return stride_[rank]; }
-
-    int                               ubound(int rank) const
-    { return base(rank) + length_(rank) - 1; }
-
-    TinyVector<int, N_rank>           ubound() const
-    { 
-        TinyVector<int, N_rank> ub;
-        ub = base() + extent() - 1;
-        return ub;
-    }
-
-    int                               zeroOffset() const
-    { return zeroOffset_; }
-
-    //////////////////////////////////////////////
-    // Debugging routines
-    //////////////////////////////////////////////
-
-    _bz_bool isInRangeForDim(int i, int d) const
-    {
-        return unsigned(i - base(d)) < length_[d];
-    }
-
-    _bz_bool isInRange(int i0) const
-    {
-        return unsigned(i0 - base(0)) < length_[0];
-    }
-
-    _bz_bool isInRange(int i0, int i1) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1];
-    }
-
-    _bz_bool isInRange(int i0, int i1, int i2) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1]
-            && unsigned(i2 - base(2)) < length_[2];
-    }
-
-    _bz_bool isInRange(int i0, int i1, int i2, int i3) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1]
-            && unsigned(i2 - base(2)) < length_[2]
-            && unsigned(i3 - base(3)) < length_[3];
-    }
-
-    _bz_bool isInRange(int i0, int i1, int i2, int i3, int i4) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1]
-            && unsigned(i2 - base(2)) < length_[2]
-            && unsigned(i3 - base(3)) < length_[3]
-            && unsigned(i4 - base(4)) < length_[4];
-    }
-
-    _bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1]
-            && unsigned(i2 - base(2)) < length_[2]
-            && unsigned(i3 - base(3)) < length_[3]
-            && unsigned(i4 - base(4)) < length_[4]
-            && unsigned(i5 - base(5)) < length_[5];
-    }
-
-    _bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1]
-            && unsigned(i2 - base(2)) < length_[2]
-            && unsigned(i3 - base(3)) < length_[3]
-            && unsigned(i4 - base(4)) < length_[4]
-            && unsigned(i5 - base(5)) < length_[5]
-            && unsigned(i6 - base(6)) < length_[6];
-    }
-
-    _bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6, int i7) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1]
-            && unsigned(i2 - base(2)) < length_[2]
-            && unsigned(i3 - base(3)) < length_[3]
-            && unsigned(i4 - base(4)) < length_[4]
-            && unsigned(i5 - base(5)) < length_[5]
-            && unsigned(i6 - base(6)) < length_[6]
-            && unsigned(i7 - base(7)) < length_[7];
-    }
-
-    _bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6, int i7, int i8) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1]
-            && unsigned(i2 - base(2)) < length_[2]
-            && unsigned(i3 - base(3)) < length_[3]
-            && unsigned(i4 - base(4)) < length_[4]
-            && unsigned(i5 - base(5)) < length_[5]
-            && unsigned(i6 - base(6)) < length_[6]
-            && unsigned(i7 - base(7)) < length_[7]
-            && unsigned(i8 - base(8)) < length_[8];
-    }
-
-    _bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6, int i7, int i8, int i9) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1]
-            && unsigned(i2 - base(2)) < length_[2]
-            && unsigned(i3 - base(3)) < length_[3]
-            && unsigned(i4 - base(4)) < length_[4]
-            && unsigned(i5 - base(5)) < length_[5]
-            && unsigned(i6 - base(6)) < length_[6]
-            && unsigned(i7 - base(7)) < length_[7]
-            && unsigned(i8 - base(8)) < length_[8]
-            && unsigned(i9 - base(9)) < length_[9];
-    }
-
-    _bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6, int i7, int i8, int i9, int i10) const
-    {
-        return unsigned(i0 - base(0)) < length_[0]
-            && unsigned(i1 - base(1)) < length_[1]
-            && unsigned(i2 - base(2)) < length_[2]
-            && unsigned(i3 - base(3)) < length_[3]
-            && unsigned(i4 - base(4)) < length_[4]
-            && unsigned(i5 - base(5)) < length_[5]
-            && unsigned(i6 - base(6)) < length_[6]
-            && unsigned(i7 - base(7)) < length_[7]
-            && unsigned(i8 - base(8)) < length_[8]
-            && unsigned(i9 - base(9)) < length_[9]
-            && unsigned(i10 - base(10)) < length_[10];
-    }
-
-    _bz_bool isInRange(const T_index& index) const
-    {
-        for (int i=0; i < N_rank; ++i)
-            if (unsigned(index[i] - base(i)) >= length_[i])
-                return _bz_false;
-
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(const T_index& index) const
-    {
-        BZPRECHECK(isInRange(index), "Array index out of range: " << index
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0) const
-    {
-        BZPRECHECK(isInRange(i0), "Array index out of range: " << i0
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1) const
-    {
-        BZPRECHECK(isInRange(i0,i1), "Array index out of range: (" 
-            << i0 << ", " << i1 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1, int i2) const
-    {
-        BZPRECHECK(isInRange(i0,i1,i2), "Array index out of range: ("
-            << i0 << ", " << i1 << ", " << i2 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1, int i2, int i3) const
-    {
-        BZPRECHECK(isInRange(i0,i1,i2,i3), "Array index out of range: ("
-            << i0 << ", " << i1 << ", " << i2 << ", " << i3 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4) const
-    {
-        BZPRECHECK(isInRange(i0,i1,i2,i3,i4), "Array index out of range: ("
-            << i0 << ", " << i1 << ", " << i2 << ", " << i3 
-            << ", " << i4 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4, 
-        int i5) const
-    {
-        BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5), "Array index out of range: ("
-            << i0 << ", " << i1 << ", " << i2 << ", " << i3
-            << ", " << i4 << ", " << i5 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6) const
-    {
-        BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6), 
-            "Array index out of range: ("
-            << i0 << ", " << i1 << ", " << i2 << ", " << i3
-            << ", " << i4 << ", " << i5 << ", " << i6 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6, int i7) const
-    {
-        BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6,i7),
-            "Array index out of range: ("
-            << i0 << ", " << i1 << ", " << i2 << ", " << i3
-            << ", " << i4 << ", " << i5 << ", " << i6 << ", " << i7 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6, int i7, int i8) const
-    {
-        BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6,i7,i8),
-            "Array index out of range: ("
-            << i0 << ", " << i1 << ", " << i2 << ", " << i3
-            << ", " << i4 << ", " << i5 << ", " << i6 << ", " << i7 
-            << ", " << i8 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6, int i7, int i8, int i9) const
-    {
-        BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6,i7,i8,i9),
-            "Array index out of range: ("
-            << i0 << ", " << i1 << ", " << i2 << ", " << i3
-            << ", " << i4 << ", " << i5 << ", " << i6 << ", " << i7
-            << ", " << i8 << ", " << i9 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    _bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
-        int i5, int i6, int i7, int i8, int i9, int i10) const
-    {
-        BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10),
-            "Array index out of range: ("
-            << i0 << ", " << i1 << ", " << i2 << ", " << i3
-            << ", " << i4 << ", " << i5 << ", " << i6 << ", " << i7
-            << ", " << i8 << ", " << i9 << ", " << i10 << ")"
-            << endl << "Lower bounds: " << storage_.base() << endl
-            << "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
-        return _bz_true;
-    }
-
-    //////////////////////////////////////////////
-    // Subscripting operators
-    //////////////////////////////////////////////
-
-    template<int N_rank2>
-    T_numtype operator()(const TinyVector<int,N_rank2>& index) const
-    {
-        assertInRange(index);
-        return data_[dot(index, stride_)];
-    }
-
-    template<int N_rank2>
-    T_numtype& _bz_restrict operator()(const TinyVector<int,N_rank2>& index) 
-    {
-        assertInRange(index);
-        return data_[dot(index, stride_)];
-    }
-
-    T_numtype operator()(TinyVector<int,1> index) const
-    {
-        assertInRange(index[0]);
-        return data_[index[0] * stride_[0]];
-    }
-
-    T_numtype& operator()(TinyVector<int,1> index)
-    {
-        assertInRange(index[0]);
-        return data_[index[0] * stride_[0]];
-    }
-
-    T_numtype operator()(TinyVector<int,2> index) const
-    {
-        assertInRange(index[0], index[1]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]];
-    }
-
-    T_numtype& operator()(TinyVector<int,2> index)
-    {
-        assertInRange(index[0], index[1]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]];
-    }
-
-    T_numtype operator()(TinyVector<int,3> index) const
-    {
-        assertInRange(index[0], index[1], index[2]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2]];
-    }
-
-    T_numtype& operator()(TinyVector<int,3> index)
-    {
-        assertInRange(index[0], index[1], index[2]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2]];
-    }
-
-    T_numtype operator()(const TinyVector<int,4>& index) const
-    {
-        assertInRange(index[0], index[1], index[2], index[3]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]];
-    }
-
-    T_numtype& operator()(const TinyVector<int,4>& index)
-    {
-        assertInRange(index[0], index[1], index[2], index[3]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]];
-    }
-
-    T_numtype operator()(const TinyVector<int,5>& index) const
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4]];
-    }
-
-    T_numtype& operator()(const TinyVector<int,5>& index)
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4]];
-    }
-
-    T_numtype operator()(const TinyVector<int,6>& index) const
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]];
-    }
-
-    T_numtype& operator()(const TinyVector<int,6>& index)
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]];
-    }
-
-    T_numtype operator()(const TinyVector<int,7>& index) const
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6]];
-    }
-
-    T_numtype& operator()(const TinyVector<int,7>& index)
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6]];
-    }
-
-    T_numtype operator()(const TinyVector<int,8>& index) const
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6], index[7]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6] + index[7] * stride_[7]];
-    }
-
-    T_numtype& operator()(const TinyVector<int,8>& index)
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6], index[7]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6] + index[7] * stride_[7]];
-    }
-
-    T_numtype operator()(const TinyVector<int,9>& index) const
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6], index[7], index[8]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6] + index[7] * stride_[7]
-            + index[8] * stride_[8]];
-    }
-
-    T_numtype& operator()(const TinyVector<int,9>& index)
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6], index[7], index[8]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6] + index[7] * stride_[7]
-            + index[8] * stride_[8]];
-    }
-
-    T_numtype operator()(const TinyVector<int,10>& index) const
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6], index[7], index[8], index[9]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6] + index[7] * stride_[7]
-            + index[8] * stride_[8] + index[9] * stride_[9]];
-    }
-
-    T_numtype& operator()(const TinyVector<int,10>& index)
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6], index[7], index[8], index[9]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6] + index[7] * stride_[7]
-            + index[8] * stride_[8] + index[9] * stride_[9]];
-    }
-
-    T_numtype operator()(const TinyVector<int,11>& index) const
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6], index[7], index[8], index[9],
-            index[10]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6] + index[7] * stride_[7]
-            + index[8] * stride_[8] + index[9] * stride_[9]
-            + index[10] * stride_[10]];
-    }
-
-    T_numtype& operator()(const TinyVector<int,11>& index)
-    {
-        assertInRange(index[0], index[1], index[2], index[3],
-            index[4], index[5], index[6], index[7], index[8], index[9],
-            index[10]);
-        return data_[index[0] * stride_[0] + index[1] * stride_[1]
-            + index[2] * stride_[2] + index[3] * stride_[3]
-            + index[4] * stride_[4] + index[5] * stride_[5]
-            + index[6] * stride_[6] + index[7] * stride_[7]
-            + index[8] * stride_[8] + index[9] * stride_[9]
-            + index[10] * stride_[10]];
-    }
-
-    T_numtype operator()(int i0) const
-    { 
-        assertInRange(i0);
-        return data_[i0 * stride_[0]]; 
-    }
-
-    T_numtype& _bz_restrict operator()(int i0) 
-    {
-        assertInRange(i0);
-        return data_[i0 * stride_[0]];
-    }
-
-    T_numtype operator()(int i0, int i1) const
-    { 
-        assertInRange(i0, i1);
-        return data_[i0 * stride_[0] + i1 * stride_[1]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1)
-    {
-        assertInRange(i0, i1);
-        return data_[i0 * stride_[0] + i1 * stride_[1]];
-    }
-
-    T_numtype operator()(int i0, int i1, int i2) const
-    {
-        assertInRange(i0, i1, i2);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1, int i2) 
-    {
-        assertInRange(i0, i1, i2);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2]];
-    }
-
-    T_numtype operator()(int i0, int i1, int i2, int i3) const
-    {
-        assertInRange(i0, i1, i2, i3);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1, int i2, int i3)
-    {
-        assertInRange(i0, i1, i2, i3);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3]];
-    }
-
-    T_numtype operator()(int i0, int i1, int i2, int i3,
-        int i4) const
-    {
-        assertInRange(i0, i1, i2, i3, i4);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1, int i2, int i3,
-        int i4)
-    {
-        assertInRange(i0, i1, i2, i3, i4);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]];
-    }
-
-    T_numtype operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5) const
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5)
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5]];
-    }
-
-    T_numtype operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6) const
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6)
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6]];
-    }
-
-    T_numtype operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6, int i7) const
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6, i7);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6] + i7 * stride_[7]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6, int i7)
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6, i7);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6] + i7 * stride_[7]];
-    }
-
-    T_numtype operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6, int i7, int i8) const
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6, i7, i8);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6] + i7 * stride_[7]
-            + i8 * stride_[8]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6, int i7, int i8)
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6, i7, i8);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6] + i7 * stride_[7]
-            + i8 * stride_[8]];
-    }
-
-    T_numtype operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6, int i7, int i8, int i9) const
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6, i7, i8, i9);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6] + i7 * stride_[7]
-            + i8 * stride_[8] + i9 * stride_[9]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6, int i7, int i8, int i9)
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6, i7, i8, i9);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6] + i7 * stride_[7]
-            + i8 * stride_[8] + i9 * stride_[9]];
-    }
-
-    T_numtype operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6, int i7, int i8, int i9, int i10) const
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6, i7, i8, 
-            i9, i10);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6] + i7 * stride_[7]
-            + i8 * stride_[8] + i9 * stride_[9] + i10 * stride_[10]];
-    }
-
-    T_numtype& _bz_restrict operator()(int i0, int i1, int i2, int i3,
-        int i4, int i5, int i6, int i7, int i8, int i9, int i10)
-    {
-        assertInRange(i0, i1, i2, i3, i4, i5, i6, i7, i8, 
-            i9, i10);
-        return data_[i0 * stride_[0] + i1 * stride_[1]
-            + i2 * stride_[2] + i3 * stride_[3] + i4 * stride_[4]
-            + i5 * stride_[5] + i6 * stride_[6] + i7 * stride_[7]
-            + i8 * stride_[8] + i9 * stride_[9] + i10 * stride_[10]];
-    }
-
-    /*
-     * Slicing to produce subarrays.  If the number of Range arguments is
-     * fewer than N_rank, then missing arguments are treated like Range::all().
-     */
-
-    T_array& noConst() const
-    { return const_cast<T_array&>(*this); }
-
-    T_array operator()(const RectDomain<N_rank>& subdomain) const
-    {
-        return T_array(noConst(), subdomain);
-    }
-
-    T_array operator()(Range r0) const
-    {
-        return T_array(noConst(), r0);
-    }
-
-    T_array operator()(Range r0, Range r1) const
-    {
-        return T_array(noConst(), r0, r1);
-    }
-
-    T_array operator()(Range r0, Range r1, Range r2) const
-    {
-        return T_array(noConst(), r0, r1, r2);
-    }
-
-    T_array operator()(Range r0, Range r1, Range r2, Range r3) const
-    {
-        return T_array(noConst(), r0, r1, r2, r3);
-    }
-
-    T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4) const
-    {
-        return T_array(noConst(), r0, r1, r2, r3, r4);
-    }
-
-    T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4,
-        Range r5) const
-    {
-        return T_array(noConst(), r0, r1, r2, r3, r4, r5);
-    }
-
-    T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4,
-        Range r5, Range r6) const
-    {
-        return T_array(noConst(), r0, r1, r2, r3, r4, r5, r6);
-    }
-
-    T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4,
-        Range r5, Range r6, Range r7) const
-    {
-        return T_array(noConst(), r0, r1, r2, r3, r4, r5, r6, r7);
-    }
-
-    T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4,
-        Range r5, Range r6, Range r7, Range r8) const
-    {
-        return T_array(noConst(), r0, r1, r2, r3, r4, r5, r6, r7, r8);
-    }
-
-    T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4,
-        Range r5, Range r6, Range r7, Range r8, Range r9) const
-    {
-        return T_array(noConst(), r0, r1, r2, r3, r4, r5, r6, r7, r8, r9);
-    }
-
-    T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4,
-        Range r5, Range r6, Range r7, Range r8, Range r9, Range r10) const
-    {
-        return T_array(noConst(), r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10);
-    }
-
-    // Allow any mixture of Range, int and Vector<int> objects as
-    // operands for operator():   A(Range(3,7), 5, Range(2,4))
-
-    /*
-     * These versions of operator() allow any combination of int
-     * and Range operands to be used.  Each int operand reduces
-     * the rank of the resulting array by one.  
-     *
-     * e.g.  Array<int,4> A(20,20,20,20);
-     *       Array<int,2> B = A(Range(5,15), 3, 5, Range(8,9));
-     *
-     * SliceInfo is a helper class defined in <blitz/arrayslice.h>.
-     * It counts the number of Range vs. int arguments and does some
-     * other helpful things.
-     *
-     * Once partial specialization becomes widely implemented, these
-     * operators may be expanded to accept Vector<int> arguments
-     * and produce ArrayPick<T,N> objects.
-     *
-     * This operator() is not provided with a single argument because
-     * the appropriate cases exist above.
-     */
-
-#ifdef BZ_PARTIAL_ORDERING
-
-    template<class T1, class T2>
-    _bz_typename SliceInfo<T_numtype,T1,T2>::T_slice
-    operator()(T1 r1, T2 r2) const
-    {
-        return SliceInfo<T_numtype,T1,T2>::T_slice(noConst(), r1, r2,
-            nilArraySection(), nilArraySection(), nilArraySection(),
-            nilArraySection(), nilArraySection(), nilArraySection(),
-            nilArraySection(), nilArraySection(), nilArraySection());
-    }
-
-    template<class T1, class T2, class T3>
-    _bz_typename SliceInfo<T_numtype,T1,T2,T3>::T_slice 
-    operator()(T1 r1, T2 r2, T3 r3) const
-    {
-        return SliceInfo<T_numtype,T1,T2,T3>::T_slice(noConst(), r1, r2, r3,
-            nilArraySection(), nilArraySection(), nilArraySection(),
-            nilArraySection(), nilArraySection(), nilArraySection(),
-            nilArraySection(), nilArraySection());
-    }
-
-    template<class T1, class T2, class T3, class T4>
-    _bz_typename SliceInfo<T_numtype,T1,T2,T3,T4>::T_slice
-    operator()(T1 r1, T2 r2, T3 r3, T4 r4) const
-    {
-        return SliceInfo<T_numtype,T1,T2,T3,T4>::T_slice(noConst(), r1, r2, r3,
-            r4, nilArraySection(), nilArraySection(),
-            nilArraySection(), nilArraySection(), nilArraySection(),
-            nilArraySection(), nilArraySection());
-    }
-
-    template<class T1, class T2, class T3, class T4, class T5>
-    _bz_typename SliceInfo<T_numtype,T1,T2,T3,T4,T5>::T_slice
-    operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5) const
-    {
-        return SliceInfo<T_numtype,T1,T2,T3,T4,T5>::T_slice(noConst(), r1, r2, 
-            r3, r4, r5, nilArraySection(),
-            nilArraySection(), nilArraySection(), nilArraySection(),
-            nilArraySection(), nilArraySection());
-    }
-
-    template<class T1, class T2, class T3, class T4, class T5, class T6>
-    _bz_typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6>::T_slice
-    operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6) const
-    {
-        return SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6>::T_slice(noConst(), r1, 
-            r2, r3, r4, r5, r6, 
-            nilArraySection(), nilArraySection(), nilArraySection(),
-            nilArraySection(), nilArraySection());
-    }
-
-    template<class T1, class T2, class T3, class T4, class T5, class T6,
-        class T7>
-    _bz_typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7>::T_slice
-    operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7) const
-    {
-        return SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7>::T_slice(noConst(), 
-            r1, r2, r3, r4, r5, r6, r7,
-            nilArraySection(), nilArraySection(),
-            nilArraySection(), nilArraySection());
-    }
-
-    template<class T1, class T2, class T3, class T4, class T5, class T6,
-        class T7, class T8>
-    _bz_typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8>::T_slice
-    operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7, T8 r8) const
-    {
-        return SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8>::T_slice(noConst(), 
-            r1, r2, r3, r4, r5, r6, r7, r8,
-            nilArraySection(), nilArraySection(), nilArraySection());
-    }
-
-    template<class T1, class T2, class T3, class T4, class T5, class T6,
-        class T7, class T8, class T9>
-    _bz_typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9>::T_slice
-    operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7, T8 r8, 
-        T9 r9) const
-    {
-        return SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9>
-            ::T_slice(noConst(), 
-            r1, r2, r3, r4, r5, r6, r7, r8, r9, 
-            nilArraySection(), nilArraySection());
-    }
-
-    template<class T1, class T2, class T3, class T4, class T5, class T6,
-        class T7, class T8, class T9, class T10>
-    _bz_typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::T_slice
-    operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7, T8 r8,
-        T9 r9, T10 r10) const
-    {
-        return SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9,
-            T10>::T_slice(noConst(), r1, r2, r3, r4, r5, r6, r7, r8, 
-            r9, r10, nilArraySection());
-    }
-
-    template<class T1, class T2, class T3, class T4, class T5, class T6,
-        class T7, class T8, class T9, class T10, class T11>
-    _bz_typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,
-        T11>::T_slice
-    operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7, T8 r8,
-        T9 r9, T10 r10, T11 r11) const
-    {
-        return SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,
-            T11>::T_slice(noConst(), r1, r2, r3, r4, r5, r6, r7, r8, r9, 
-            r10, r11);
-    }
-
-#endif // BZ_PARTIAL_ORDERING
-
-    /*
-     * These versions of operator() are provided to support tensor-style
-     * array notation, e.g.
-     *
-     * Array<float, 2> A, B;
-     * firstIndex i;
-     * secondIndex j;
-     * thirdIndex k;
-     * Array<float, 3> C = A(i,j) * B(j,k);
-     */
-
-    template<int N0>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0> >
-    operator()(IndexPlaceholder<N0>) const
-    { 
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0> >
-            (noConst());
-    }
-
-    template<int N0, int N1>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1> >(noConst());
-    } 
-
-    template<int N0, int N1, int N2>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1, N2> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>,
-        IndexPlaceholder<N2>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1, N2> >(noConst());
-    }
-
-    template<int N0, int N1, int N2, int N3>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1, N2, N3> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>,
-        IndexPlaceholder<N2>, IndexPlaceholder<N3>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1, N2, N3> >(noConst());
-    }
-
-    template<int N0, int N1, int N2, int N3, int N4>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1, N2, N3, N4> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>,
-        IndexPlaceholder<N2>, IndexPlaceholder<N3>, 
-        IndexPlaceholder<N4>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1, N2, N3, N4> >(noConst());
-    }
-
-    template<int N0, int N1, int N2, int N3, int N4, int N5>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1, N2, N3, 
-        N4, N5> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>,
-        IndexPlaceholder<N2>, IndexPlaceholder<N3>, IndexPlaceholder<N4>,
-        IndexPlaceholder<N5>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1, N2, N3, N4, N5> >(noConst());
-    }
-
-    template<int N0, int N1, int N2, int N3, int N4, int N5, int N6>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1, N2, N3,
-        N4, N5, N6> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>,
-        IndexPlaceholder<N2>, IndexPlaceholder<N3>, IndexPlaceholder<N4>,
-        IndexPlaceholder<N5>, IndexPlaceholder<N6>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1, N2, N3, N4, N5, N6> >(noConst());
-    }
-
-    template<int N0, int N1, int N2, int N3, int N4, int N5, int N6,
-        int N7>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1, N2, N3,
-        N4, N5, N6, N7> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>,
-        IndexPlaceholder<N2>, IndexPlaceholder<N3>, IndexPlaceholder<N4>,
-        IndexPlaceholder<N5>, IndexPlaceholder<N6>, 
-        IndexPlaceholder<N7>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1, N2, N3, N4, N5, N6, N7> >(noConst());
-    }
-
-    template<int N0, int N1, int N2, int N3, int N4, int N5, int N6,
-        int N7, int N8>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1, N2, N3,
-        N4, N5, N6, N7, N8> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>,
-        IndexPlaceholder<N2>, IndexPlaceholder<N3>, IndexPlaceholder<N4>,
-        IndexPlaceholder<N5>, IndexPlaceholder<N6>, IndexPlaceholder<N7>,
-        IndexPlaceholder<N8>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1, N2, N3, N4, N5, N6, N7, N8> >(noConst());
-    }
-
-    template<int N0, int N1, int N2, int N3, int N4, int N5, int N6,
-        int N7, int N8, int N9>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1, N2, N3,
-        N4, N5, N6, N7, N8, N9> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>,
-        IndexPlaceholder<N2>, IndexPlaceholder<N3>, IndexPlaceholder<N4>,
-        IndexPlaceholder<N5>, IndexPlaceholder<N6>, IndexPlaceholder<N7>,
-        IndexPlaceholder<N8>, IndexPlaceholder<N9>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1, N2, N3, N4, N5, N6, N7, N8, N9> >(noConst());
-    }
-
-    template<int N0, int N1, int N2, int N3, int N4, int N5, int N6,
-        int N7, int N8, int N9, int N10>
-    _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0, N1, N2, N3,
-        N4, N5, N6, N7, N8, N9, N10> >
-    operator()(IndexPlaceholder<N0>, IndexPlaceholder<N1>,
-        IndexPlaceholder<N2>, IndexPlaceholder<N3>, IndexPlaceholder<N4>,
-        IndexPlaceholder<N5>, IndexPlaceholder<N6>, IndexPlaceholder<N7>,
-        IndexPlaceholder<N8>, IndexPlaceholder<N9>, 
-        IndexPlaceholder<N10>) const
-    {
-        return _bz_ArrayExpr<ArrayIndexMapping<T_numtype, N_rank, N0,
-            N1, N2, N3, N4, N5, N6, N7, N8, N9, N10> >(noConst());
-    }
-
-    //////////////////////////////////////////////
-    // Support for multicomponent arrays
-    //////////////////////////////////////////////
-
-    /*
-     * See <blitz/array/multi.h> for an explanation of the traits class
-     * multicomponent_traits.
-     */
-
-    // NEEDS_WORK: const version
-    Array<_bz_typename multicomponent_traits<T_numtype>::T_element,N_rank>
-    operator[](int component)
-    {
-        typedef _bz_typename multicomponent_traits<T_numtype>::T_element 
-            T_compType;
-
-        return extractComponent(T_compType(), 
-            component, multicomponent_traits<T_numtype>::numComponents);
-    }
-
-    //////////////////////////////////////////////
-    // Indirection
-    //////////////////////////////////////////////
- 
-    template<class T_indexContainer>
-    IndirectArray<T_array, T_indexContainer>
-    operator[](const T_indexContainer& index)
-    {
-        return IndirectArray<T_array, T_indexContainer>(*this,
-            const_cast<T_indexContainer&>(index));
-    }
- 
-    //////////////////////////////////////////////
-    // Assignment Operators
-    //////////////////////////////////////////////
-
-    // Scalar operand
-    // NEEDS_WORK : need a precondition check on
-    // isStorageContiguous when operator, is used.
-    ListInitializationSwitch<T_array> operator=(T_numtype x)
-    {
-        return ListInitializationSwitch<T_array>(*this, x);
-    }
-
-    T_array& initialize(T_numtype);
-
-    // Was:
-    // T_array& operator=(T_numtype);
-
-#ifdef BZ_NEW_EXPRESSION_TEMPLATES
-    template<class T_expr>
-    T_array& operator=(const ETBase<T_expr>&);
-    T_array& operator=(const Array<T_numtype,N_rank>&);
-
-    template<class T> T_array& operator+=(const T&);
-    template<class T> T_array& operator-=(const T&);
-    template<class T> T_array& operator*=(const T&);
-    template<class T> T_array& operator/=(const T&);
-    template<class T> T_array& operator%=(const T&);
-    template<class T> T_array& operator^=(const T&);
-    template<class T> T_array& operator&=(const T&);
-    template<class T> T_array& operator|=(const T&);
-    template<class T> T_array& operator>>=(const T&);
-    template<class T> T_array& operator<<=(const T&);
-
-#else
-    T_array& operator+=(T_numtype);
-    T_array& operator-=(T_numtype);
-    T_array& operator*=(T_numtype);
-    T_array& operator/=(T_numtype);
-    T_array& operator%=(T_numtype);
-    T_array& operator^=(T_numtype);
-    T_array& operator&=(T_numtype);
-    T_array& operator|=(T_numtype);
-    T_array& operator>>=(T_numtype);
-    T_array& operator<<=(T_numtype);
-
-    // Array operands
-    T_array& operator=(const Array<T_numtype,N_rank>&);
-
-    template<class T_numtype2> 
-    T_array& operator=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator+=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator-=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator*=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator/=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator%=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator^=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator&=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator|=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator>>=(const Array<T_numtype2,N_rank>&);
-    template<class T_numtype2>
-    T_array& operator<<=(const Array<T_numtype2,N_rank>&);
-
-    // Array expression operands
-    template<class T_expr>
-    inline T_array& operator=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator+=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator-=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator*=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator/=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator%=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator^=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator&=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator|=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator>>=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-    template<class T_expr>
-    inline T_array& operator<<=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
-
-    // NEEDS_WORK -- Index placeholder operand
-
-    // NEEDS_WORK -- Random operand
-#endif
-
-public:
-    // Undocumented implementation routines
-
-    template<class T_expr, class T_update>
-    inline T_array& evaluate(T_expr expr, T_update);
-
-#ifdef BZ_HAVE_STD
-    template<class T_expr, class T_update>
-    inline T_array& evaluateWithFastTraversal(
-        const TraversalOrder<N_rank - 1>& order, 
-        T_expr expr, T_update);
-#endif
-
-#ifdef BZ_ARRAY_2D_STENCIL_TILING
-    template<class T_expr, class T_update>
-    inline T_array& evaluateWithTiled2DTraversal(
-        T_expr expr, T_update);
-#endif
-
-    template<class T_expr, class T_update>
-    inline T_array& evaluateWithIndexTraversal1(
-        T_expr expr, T_update);
-
-    template<class T_expr, class T_update>
-    inline T_array& evaluateWithIndexTraversalN(
-        T_expr expr, T_update);
-
-    template<class T_expr, class T_update>
-    inline T_array& evaluateWithStackTraversal1(
-        T_expr expr, T_update);
-
-    template<class T_expr, class T_update>
-    inline T_array& evaluateWithStackTraversalN(
-        T_expr expr, T_update);
-
-
-    T_numtype* _bz_restrict getInitializationIterator()
-    { return dataFirst(); }
-
-    _bz_bool canCollapse(int outerRank, int innerRank) const
-    { 
-#ifdef BZ_DEBUG_TRAVERSE
-        BZ_DEBUG_MESSAGE("stride(" << innerRank << ")=" << stride(innerRank)
-          << ", extent()=" << extent(innerRank) << ", stride(outerRank)="
-          << stride(outerRank));
-#endif
-        return (stride(innerRank) * extent(innerRank) == stride(outerRank)); 
-    }
-
-protected:
-    //////////////////////////////////////////////
-    // Implementation routines
-    //////////////////////////////////////////////
-
-    _bz_inline2 void computeStrides();
-    _bz_inline2 void setupStorage(int rank);
-    void constructSubarray(Array<T_numtype, N_rank>& array, 
-        const RectDomain<N_rank>&);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0, Range r1);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0,
-        Range r1, Range r2);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0,
-        Range r1, Range r2, Range r3);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0,
-        Range r1, Range r2, Range r3, Range r4);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0,
-        Range r1, Range r2, Range r3, Range r4, Range r5);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0,
-        Range r1, Range r2, Range r3, Range r4, Range r5, Range r6);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0,
-        Range r1, Range r2, Range r3, Range r4, Range r5, Range r6,
-        Range r7);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0,
-        Range r1, Range r2, Range r3, Range r4, Range r5, Range r6,
-        Range r7, Range r8);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0,
-        Range r1, Range r2, Range r3, Range r4, Range r5, Range r6,
-        Range r7, Range r8, Range r9);
-    void constructSubarray(Array<T_numtype, N_rank>& array, Range r0,
-        Range r1, Range r2, Range r3, Range r4, Range r5, Range r6,
-        Range r7, Range r8, Range r9, Range r10);
-
-    void calculateZeroOffset();
-
-    template<int N_rank2, class R0, class R1, class R2, class R3, class R4, 
-        class R5, class R6, class R7, class R8, class R9, class R10>
-    void constructSlice(Array<T_numtype, N_rank2>& array, R0 r0, R1 r1, R2 r2, 
-        R3 r3, R4 r4, R5 r5, R6 r6, R7 r7, R8 r8, R9 r9, R10 r10);
-
-    template<int N_rank2>
-    void slice(int& setRank, Range r, Array<T_numtype,N_rank2>& array,
-        TinyVector<int,N_rank2>& rankMap, int sourceRank);
-
-    template<int N_rank2>
-    void slice(int& setRank, int i, Array<T_numtype,N_rank2>& array,
-        TinyVector<int,N_rank2>& rankMap, int sourceRank);
-
-    template<int N_rank2>
-    void slice(int& setRank, nilArraySection, Array<T_numtype,N_rank2>& array,
-        TinyVector<int,N_rank2>& rankMap, int sourceRank)
-    { }
-
-    void doTranspose(int destRank, int sourceRank, T_array& array);
-
-protected:
-    //////////////////////////////////////////////
-    // Data members
-    //////////////////////////////////////////////
-
-    // NB: adding new data members may require changes to ctors, reference()
-
-    /*
-     * For a description of the storage_ members, see the comments for class 
-     * GeneralArrayStorage<N_rank> above.
-     *
-     * length_[] contains the extent of each rank.  E.g. a 10x20x30 array
-     *           would have length_ = { 10, 20, 30}.
-     * stride_[] contains the stride to move to the next element along each
-     *           rank.
-     * zeroOffset_ is the distance from the first element in the array 
-     *           to the point (0,0,...,0).  If base_ is zero and all ranks are 
-     *           stored ascending, then zeroOffset_ is zero.  This value
-     *           is needed because to speed up indexing, the data_ member
-     *           (inherited from MemoryBlockReference) always refers to
-     *           (0,0,...,0).
-     */
-    GeneralArrayStorage<N_rank> storage_;
-    TinyVector<int, N_rank> length_;
-    TinyVector<int, N_rank> stride_;
-    int zeroOffset_;
-};
-
-/*
- * Rank numbers start with zero, which may be confusing to users coming
- * from Fortran.  To make code more readable, the following constants
- * may help.  Example: instead of
- * 
- * int firstRankExtent = A.extent(0);
- *
- * One can write:
- *
- * int firstRankExtent = A.extent(firstRank);
- */
-
-const int firstRank    = 0;
-const int secondRank   = 1;
-const int thirdRank    = 2;
-const int fourthRank   = 3;
-const int fifthRank    = 4;
-const int sixthRank    = 5;
-const int seventhRank  = 6;
-const int eighthRank   = 7;
-const int ninthRank    = 8;
-const int tenthRank    = 9;
-const int eleventhRank = 10;
-
-const int firstDim    = 0;
-const int secondDim   = 1;
-const int thirdDim    = 2;
-const int fourthDim   = 3;
-const int fifthDim    = 4;
-const int sixthDim    = 5;
-const int seventhDim  = 6;
-const int eighthDim   = 7;
-const int ninthDim    = 8;
-const int tenthDim    = 9;
-const int eleventhDim = 10;
-
-/*
- * Global Functions
- */
-
-template<class T_numtype>
-ostream& operator<<(ostream&, const Array<T_numtype,1>&);
-
-template<class T_numtype>
-ostream& operator<<(ostream&, const Array<T_numtype,2>&);
-
-template<class T_numtype, int N_rank>
-ostream& operator<<(ostream&, const Array<T_numtype,N_rank>&);
-
-template<class T_numtype, int N_rank>
-istream& operator>>(istream& is, Array<T_numtype,N_rank>& x);
-
-BZ_NAMESPACE_END
-
-/*
- * Include implementations of the member functions and some additional
- * global functions.
- */
-
-#include <blitz/array/iter.h>       // Array iterators
-#include <blitz/array/fastiter.h>   // Fast Array iterators (for et)
-#include <blitz/array/expr.h>       // Array expression objects
-#include <blitz/array/methods.cc>   // Member functions
-#include <blitz/array/eval.cc>      // Array expression evaluation
-#include <blitz/array/ops.cc>       // Assignment operators
-#include <blitz/array/io.cc>        // Output formatting
-
-#ifdef BZ_NEW_EXPRESSION_TEMPLATES
- #include <blitz/array/et.h>        // Expression templates
-#else
- #include <blitz/array/bops.cc>     // Expression templates, two operands
- #include <blitz/array/uops.cc>     // Expression templates, math functions
-#endif
-
-#include <blitz/array/misc.cc>      // Expression templates, miscellaneous
-#include <blitz/array/reduce.h>     // Array reduction expression templates
-#include <blitz/array/interlace.cc> // Allocation of interlaced arrays
-#include <blitz/array/resize.cc>    // Array resize, resizeAndPreserve
-#include <blitz/array/slicing.cc>   // Slicing and subarrays
-#include <blitz/array/cycle.cc>     // Cycling arrays
-#include <blitz/array/complex.cc>   // Special support for complex arrays
-#include <blitz/array/zip.h>        // Zipping multicomponent types
-#include <blitz/array/where.h>      // where(X,Y,Z)
-#include <blitz/array/stencil.h>    // Stencil objects
-#include <blitz/array/indirect.h>   // Indirection
-
-#endif // BZ_ARRAY_H
-
diff --git a/weave/blitz-20001213/blitz/array/asexpr.h b/weave/blitz-20001213/blitz/array/asexpr.h
deleted file mode 100644
index 56bd96e..0000000
--- a/weave/blitz-20001213/blitz/array/asexpr.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef BZ_ARRAYASEXPR_H
-#define BZ_ARRAYASEXPR_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/asexpr.h> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// The traits class asExpr converts arbitrary things to
-// expression templatable operands.
-
-// Default to scalar.
-template<class T>
-struct asExpr {
-    typedef _bz_ArrayExprConstant<T> T_expr;
-};
-
-// Already an expression template term
-template<class T>
-struct asExpr<_bz_ArrayExpr<T> > {
-    typedef _bz_ArrayExpr<T> T_expr;
-};
-
-// An array operand
-template<class T, int N>
-struct asExpr<Array<T,N> > {
-    typedef FastArrayIterator<T,N> T_expr;
-};
-
-// Index placeholder
-template<int N>
-struct asExpr<IndexPlaceholder<N> > {
-    typedef IndexPlaceholder<N> T_expr;
-};
-
-BZ_NAMESPACE_END
-
-#endif
diff --git a/weave/blitz-20001213/blitz/array/cartesian.h b/weave/blitz-20001213/blitz/array/cartesian.h
deleted file mode 100644
index 9bcce6a..0000000
--- a/weave/blitz-20001213/blitz/array/cartesian.h
+++ /dev/null
@@ -1,159 +0,0 @@
-#ifndef BZ_ARRAY_CARTESIAN_H
-#define BZ_ARRAY_CARTESIAN_H
-
-BZ_NAMESPACE(blitz)
-
-/*
- * CartesianProduct<T_tuple,T_container> is an adaptor which represents
- * the cartesian product of several containers.  
- */
-
-// forward declaration of iterator
-template<class T_tuple, class T_container, int N_containers>
-class CartesianProductIterator;
-
-struct _cp_end_tag { };
-
-template<class T_tuple, class T_container, int N_containers>
-class CartesianProduct {
-public:
-    typedef T_tuple value_type;
-    typedef T_tuple& reference;
-    typedef const T_tuple& const_reference;
-    typedef CartesianProductIterator<T_tuple,T_container,N_containers> iterator;
-    typedef int difference_type;
-    typedef int size_type;
-
-    iterator begin()
-    { return iterator(*this); }
-
-    iterator end()
-    { return iterator(_cp_end_tag()); }
-
-    CartesianProduct(const T_container& container0, 
-        const T_container& container1)
-    { 
-        BZPRECONDITION(N_containers == 2);
-        containers_[0] = &container0;
-        containers_[1] = &container1;
-    }
-
-    CartesianProduct(const T_container& container0, 
-        const T_container& container1,
-        const T_container& container2)
-    { 
-        BZPRECONDITION(N_containers == 3);
-        containers_[0] = &container0;
-        containers_[1] = &container1;
-        containers_[2] = &container2;
-    }
-
-    const T_container& operator[](int i)
-    { return *(containers_[i]); }
-
-    void debugDump();
-
-protected:
-    const T_container* containers_[N_containers]; 
-};
-
-template<class T_tuple, class T_container, int N_containers>
-void CartesianProduct<T_tuple,T_container,N_containers>::debugDump()
-{
-    cout << "Dump of CartesianProduct<..,..," << N_containers << ">" << endl;
-    for (int i=0; i < N_containers; ++i)
-    {
-        cout << "Container " << (i+1) << ": ";
-        _bz_typename T_container::const_iterator iter = containers_[i]->begin(),
-            end = containers_[i]->end();
-        for (; iter != end; ++iter)
-            cout << (*iter) << '\t'; 
-    }
-}
-
-template<class T_tuple, class T_container, int N_containers>
-class CartesianProductIterator {
-public:
-    typedef _bz_typename T_container::const_iterator citerator;
-    typedef CartesianProductIterator<T_tuple,T_container,N_containers> iterator;
-    typedef CartesianProduct<T_tuple,T_container,N_containers> T_cp;
-
-    CartesianProductIterator(T_cp& container)
-    {
-        for (int i=0; i < N_containers; ++i)
-        {
-            firstiters_[i] = container[i].begin();
-            iters_[i] = firstiters_[i];
-            enditers_[i] = container[i].end();
-            tuple_[i] = *iters_[i];
-        }
-
-        endflag_ = _bz_false;
-    }
-
-    void operator++();
-
-    CartesianProductIterator(_cp_end_tag)
-    {
-        endflag_ = _bz_true;
-    }
-
-    _bz_bool operator==(const iterator& x) const
-    {
-        return (endflag_ == x.endflag_);
-    }
-
-    _bz_bool operator!=(const iterator& x) const
-    {   
-        return endflag_ != x.endflag_;
-    }
-
-    const T_tuple& operator*() const
-    { return tuple_; }
-
-protected:
-    citerator iters_[N_containers];
-    citerator firstiters_[N_containers];
-    citerator enditers_[N_containers];
-    T_tuple tuple_;
-    _bz_bool endflag_;
-};
-
-template<class T_tuple, class T_container, int N_containers>
-void CartesianProductIterator<T_tuple, T_container, 
-    N_containers>::operator++()
-{
-    // NEEDS_WORK: put in short-circuit for most common case
-    // (just increment the last iterator)
-
-    // Usual stack-style increment
-    const int Nminus1 = N_containers - 1;
-
-    int i = Nminus1;
-
-    for (; i >= 0; --i)
-    {
-        ++iters_[i];
-        if (iters_[i] != enditers_[i])
-            break;
-    }
-
-    if (i == -1)
-    {
-        endflag_ = _bz_true;
-        return;
-    }
-
-    tuple_[i] = *iters_[i];
-
-    for (++i; i < N_containers; ++i)  
-    {
-        iters_[i] = firstiters_[i];
-        tuple_[i] = *iters_[i];
-    }
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAY_CARTESIAN_H
-
diff --git a/weave/blitz-20001213/blitz/array/cgsolve.h b/weave/blitz-20001213/blitz/array/cgsolve.h
deleted file mode 100644
index 68e9d05..0000000
--- a/weave/blitz-20001213/blitz/array/cgsolve.h
+++ /dev/null
@@ -1,126 +0,0 @@
-#ifndef BZ_CGSOLVE_H
-#define BZ_CGSOLVE_H
-
-BZ_NAMESPACE(blitz)
-
-template<class T_numtype>
-void dump(const char* name, Array<T_numtype,3>& A)
-{
-    T_numtype normA = 0;
-
-    for (int i=A.lbound(0); i <= A.ubound(0); ++i)
-    {
-      for (int j=A.lbound(1); j <= A.ubound(1); ++j)
-      {
-        for (int k=A.lbound(2); k <= A.ubound(2); ++k)
-        {
-            T_numtype tmp = A(i,j,k);
-            normA += ::fabs(tmp);
-        }
-      }
-    }
-
-    normA /= A.numElements();
-    cout << "Average magnitude of " << name << " is " << normA << endl;
-}
-
-template<class T_stencil, class T_numtype, int N_rank, class T_BCs>
-int conjugateGradientSolver(T_stencil stencil,
-    Array<T_numtype,N_rank>& x,
-    Array<T_numtype,N_rank>& rhs, double haltrho, 
-    const T_BCs& boundaryConditions)
-{
-    // NEEDS_WORK: only apply CG updates over interior; need to handle
-    // BCs separately.
-
-    // x = unknowns being solved for (initial guess assumed)
-    // r = residual
-    // p = descent direction for x
-    // q = descent direction for r
-
-    RectDomain<N_rank> interior = interiorDomain(stencil, x, rhs);
-
-cout << "Interior: " << interior.lbound() << ", " << interior.ubound()
-     << endl;
-
-    // Calculate initial residual
-    Array<T_numtype,N_rank> r = rhs.copy();
-    r *= -1.0;
-
-    boundaryConditions.applyBCs(x);
-
-    applyStencil(stencil, r, x);
-
- dump("r after stencil", r);
- cout << "Slice through r: " << endl << r(23,17,Range::all()) << endl;
- cout << "Slice through x: " << endl << x(23,17,Range::all()) << endl;
- cout << "Slice through rhs: " << endl << rhs(23,17,Range::all()) << endl;
-
-    r *= -1.0;
-
- dump("r", r);
-
-    // Allocate the descent direction arrays
-    Array<T_numtype,N_rank> p, q;
-    allocateArrays(x.shape(), p, q);
-
-    int iteration = 0;
-    int converged = 0;
-    T_numtype rho = 0.;
-    T_numtype oldrho = 0.;
-
-    const int maxIterations = 1000;
-
-    // Get views of interior of arrays (without boundaries)
-    Array<T_numtype,N_rank> rint = r(interior);
-    Array<T_numtype,N_rank> pint = p(interior);
-    Array<T_numtype,N_rank> qint = q(interior);
-    Array<T_numtype,N_rank> xint = x(interior);
-
-    while (iteration < maxIterations)
-    {
-        rho = sum(r * r);
-
-        if ((iteration % 20) == 0)
-            cout << "CG: Iter " << iteration << "\t rho = " << rho << endl;
-
-        // Check halting condition
-        if (rho < haltrho)
-        {
-            converged = 1;
-            break;
-        }
-
-        if (iteration == 0)
-        {
-            p = r;
-        }
-        else {
-            T_numtype beta = rho / oldrho;
-            p = beta * p + r;
-        }
-
-        q = 0.;
-//        boundaryConditions.applyBCs(p);
-        applyStencil(stencil, q, p);
-
-        T_numtype pq = sum(p*q);
-
-        T_numtype alpha = rho / pq;
-
-        x += alpha * p;
-        r -= alpha * q;
-
-        oldrho = rho;
-        ++iteration;
-    }
-
-    if (!converged)
-        cout << "Warning: CG solver did not converge" << endl;
-
-    return iteration;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_CGSOLVE_H
diff --git a/weave/blitz-20001213/blitz/array/complex.cc b/weave/blitz-20001213/blitz/array/complex.cc
deleted file mode 100644
index d03e097..0000000
--- a/weave/blitz-20001213/blitz/array/complex.cc
+++ /dev/null
@@ -1,32 +0,0 @@
-// Special functions for complex arrays
-
-#ifndef BZ_ARRAYCOMPLEX_CC
-#define BZ_ARRAYCOMPLEX_CC
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/complex.cc> must be included via <blitz/array/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-#ifdef BZ_HAVE_COMPLEX
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank> real(const Array<complex<T_numtype>,N_rank>& A)
-{
-    return A.extractComponent(T_numtype(), 0, 2);
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank> imag(const Array<complex<T_numtype>,N_rank>& A)
-{
-    return A.extractComponent(T_numtype(), 1, 2);
-}
-
-
-#endif
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYCOMPLEX_CC
-
diff --git a/weave/blitz-20001213/blitz/array/convolve.cc b/weave/blitz-20001213/blitz/array/convolve.cc
deleted file mode 100644
index 5142389..0000000
--- a/weave/blitz-20001213/blitz/array/convolve.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef BZ_ARRAY_CONVOLVE_CC
-#define BZ_ARRAY_CONVOLVE_CC
-
-BZ_NAMESPACE(blitz)
-
-template<class T>
-Array<T,1> convolve(const Array<T,1>& B, const Array<T,1>& C)
-{
-    int Bl = B.lbound(0), Bh = B.ubound(0);
-    int Cl = C.lbound(0), Ch = C.ubound(0);
-
-    int lbound = Bl + Cl;
-    int ubound = Bh + Ch;
-    
-    Array<T,1> A(Range(lbound,ubound));
-
-    for (int i=lbound; i <= ubound; ++i)
-    {
-        int jl = i - Ch;
-        if (jl < Bl)
-            jl = Bl;
-
-        int jh = i - Cl;
-        if (jh > Bh)
-            jh = Bh;
-
-        T result = 0;
-        for (int j=jl; j <= jh; ++j)
-            result += B(j) * C(i-j);
-
-        A(i) = result;
-    }
-
-    return A;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAY_CONVOLVE_CC
-
diff --git a/weave/blitz-20001213/blitz/array/convolve.h b/weave/blitz-20001213/blitz/array/convolve.h
deleted file mode 100644
index 93ecc76..0000000
--- a/weave/blitz-20001213/blitz/array/convolve.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef BZ_ARRAY_CONVOLVE_H
-#define BZ_ARRAY_CONVOLVE_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/convolve.h> must be included after <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class T>
-Array<T,1> convolve(const Array<T,1>& B, const Array<T,1>& C);
-
-BZ_NAMESPACE_END
-
-#include <blitz/array/convolve.cc>
-
-#endif // BZ_ARRAY_CONVOLVE_H
diff --git a/weave/blitz-20001213/blitz/array/cycle.cc b/weave/blitz-20001213/blitz/array/cycle.cc
deleted file mode 100644
index baa7aaf..0000000
--- a/weave/blitz-20001213/blitz/array/cycle.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef BZ_ARRAYCYCLE_CC
-#define BZ_ARRAYCYCLE_CC
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/cycle.cc> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class T_numtype, int N_rank>
-void cycleArrays(Array<T_numtype, N_rank>& a, Array<T_numtype, N_rank>& b)
-{
-    Array<T_numtype, N_rank> tmp(a);
-    a.reference(b);
-    b.reference(tmp);
-}
-
-template<class T_numtype, int N_rank>
-void cycleArrays(Array<T_numtype, N_rank>& a, Array<T_numtype, N_rank>& b,
-    Array<T_numtype, N_rank>& c)
-{
-    Array<T_numtype, N_rank> tmp(a);
-    a.reference(b);
-    b.reference(c);
-    c.reference(tmp);
-}
-
-template<class T_numtype, int N_rank>
-void cycleArrays(Array<T_numtype, N_rank>& a, Array<T_numtype, N_rank>& b,
-    Array<T_numtype, N_rank>& c, Array<T_numtype, N_rank>& d)
-{
-    Array<T_numtype, N_rank> tmp(a);
-    a.reference(b);
-    b.reference(c);
-    c.reference(d);
-    d.reference(tmp);
-}
-
-template<class T_numtype, int N_rank>
-void cycleArrays(Array<T_numtype, N_rank>& a, Array<T_numtype, N_rank>& b,
-    Array<T_numtype, N_rank>& c, Array<T_numtype, N_rank>& d,
-    Array<T_numtype, N_rank>& e)
-{
-    Array<T_numtype, N_rank> tmp(a);
-    a.reference(b);
-    b.reference(c);
-    c.reference(d);
-    d.reference(e);
-    e.reference(tmp);
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYCYCLE_CC
diff --git a/weave/blitz-20001213/blitz/array/domain.h b/weave/blitz-20001213/blitz/array/domain.h
deleted file mode 100644
index 650b553..0000000
--- a/weave/blitz-20001213/blitz/array/domain.h
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef BZ_DOMAIN_H
-#define BZ_DOMAIN_H
-
-#ifndef BZ_TINYVEC_H
- #include <blitz/tinyvec.h>
-#endif
-
-#ifndef BZ_RANGE_H
- #include <blitz/range.h>
-#endif
-
-/*
- * Portions of this class were inspired by the "RectDomain" class
- * provided by the Titanium language (UC Berkeley).
- */
-
-BZ_NAMESPACE(blitz)
-
-template<int N_rank>
-class RectDomain {
-
-public:
-    RectDomain(const TinyVector<int,N_rank>& lbound,
-        const TinyVector<int,N_rank>& ubound)
-      : lbound_(lbound), ubound_(ubound)
-    { }
-
-    // NEEDS_WORK: better constructors
-    // RectDomain(Range, Range, ...)
-    // RectDomain with any combination of Range and int
-
-    const TinyVector<int,N_rank>& lbound() const
-    { return lbound_; }
-
-    int lbound(int i) const
-    { return lbound_(i); }
-
-    const TinyVector<int,N_rank>& ubound() const
-    { return ubound_; }
-
-    int ubound(int i) const
-    { return ubound_(i); }
-
-    Range operator[](int rank) const
-    { return Range(lbound_(rank), ubound_(rank)); }
-
-    void shrink(int amount)
-    {
-        lbound_ += amount;
-        ubound_ -= amount;
-    }
-
-    void shrink(int dim, int amount)
-    {
-        lbound_(dim) += amount;
-        ubound_(dim) -= amount;
-    }
-
-    void expand(int amount)
-    {
-        lbound_ -= amount;
-        ubound_ += amount;
-    }
-
-    void expand(int dim, int amount)
-    {
-        lbound_(dim) -= amount;
-        ubound_(dim) += amount;
-    }
-
-private:
-    TinyVector<int,N_rank> lbound_, ubound_;
-};
-
-template<int N_rank>
-inline RectDomain<N_rank> strip(const TinyVector<int,N_rank>& startPosition,
-    int stripDimension, int ubound)
-{
-    BZPRECONDITION((stripDimension >= 0) && (stripDimension < N_rank));
-    BZPRECONDITION(ubound >= startPosition(stripDimension));
-
-    TinyVector<int,N_rank> endPosition = startPosition;
-    endPosition(stripDimension) = ubound;
-    return RectDomain<N_rank>(startPosition, endPosition);
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_DOMAIN_H
diff --git a/weave/blitz-20001213/blitz/array/et.h b/weave/blitz-20001213/blitz/array/et.h
deleted file mode 100644
index c71fb65..0000000
--- a/weave/blitz-20001213/blitz/array/et.h
+++ /dev/null
@@ -1,334 +0,0 @@
-#ifndef BZ_ARRAY_ET_H
-#define BZ_ARRAY_ET_H
-
-#ifndef BZ_ARRAYEXPR_H
- #error <blitz/array/et.h> must be included after <blitz/arrayexpr.h>
-#endif
-
-#include <blitz/array/asexpr.h>
-
-#ifndef BZ_OPS_H
- #include <blitz/ops.h>
-#endif
-
-#ifndef BZ_MATHFUNC_H
- #include <blitz/mathfunc.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * Array expression templates: the macro BZ_DECLARE_ARRAY_ET(X,Y)
- * declares a function or operator which takes two operands.
- * X is the function name (or operator), and Y is the functor object
- * which implements the operation.
- */
-
-#define BZ_DECLARE_ARRAY_ET(name, applic)                                 \
-                                                                          \
-template<class T_numtype1, int N_rank1, class T_other>                    \
-_bz_inline_et                                                             \
-_bz_ArrayExpr<_bz_ArrayExprOp<FastArrayIterator<T_numtype1, N_rank1>,     \
-    _bz_typename asExpr<T_other>::T_expr,                                 \
-    applic<T_numtype1,                                                    \
-    _bz_typename asExpr<T_other>::T_expr::T_numtype> > >                  \
-name (const Array<T_numtype1,N_rank1>& d1,                                \
-    const T_other& d2)                                                    \
-{                                                                         \
-    return _bz_ArrayExpr<_bz_ArrayExprOp<FastArrayIterator<T_numtype1,    \
-        N_rank1>,                                                         \
-        _bz_typename asExpr<T_other>::T_expr,                             \
-        applic<T_numtype1,                                                \
-        _bz_typename asExpr<T_other>::T_expr::T_numtype> > >              \
-      (d1.beginFast(),d2);                                                \
-}                                                                         \
-                                                                          \
-template<class T_expr1, class T_other>                                    \
-_bz_inline_et                                                             \
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<T_expr1>,                     \
-    _bz_typename asExpr<T_other>::T_expr,                                 \
-    applic<_bz_typename T_expr1::T_numtype,                               \
-        _bz_typename asExpr<T_other>::T_expr::T_numtype> > >              \
-name(const _bz_ArrayExpr<T_expr1>& d1,                                    \
-    const T_other& d2)                                                    \
-{                                                                         \
-    return _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<T_expr1>,          \
-        _bz_typename asExpr<T_other>::T_expr,                             \
-        applic<_bz_typename T_expr1::T_numtype,                           \
-            _bz_typename asExpr<T_other>::T_expr::T_numtype> > >(d1,d2);  \
-}                                                                         \
-                                                                          \
-template<class T1, class T2>                                              \
-_bz_inline_et                                                             \
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_typename asExpr<T1>::T_expr,            \
-    _bz_typename asExpr<T2>::T_expr,                                      \
-    applic<_bz_typename asExpr<T1>::T_expr::T_numtype,                    \
-        _bz_typename asExpr<T2>::T_expr::T_numtype> > >                   \
-name(const ETBase<T1>& d1, const T2& d2)                                  \
-{                                                                         \
-    return _bz_ArrayExpr<_bz_ArrayExprOp<_bz_typename asExpr<T1>::T_expr, \
-        _bz_typename asExpr<T2>::T_expr,                                  \
-        applic<_bz_typename asExpr<T1>::T_expr::T_numtype,                \
-            _bz_typename asExpr<T2>::T_expr::T_numtype> > >               \
-        (static_cast<const T1&>(d1), d2);                                 \
-}                                                                         \
-                                                                          \
-template<class T1, class T2>                                              \
-_bz_inline_et                                                             \
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_typename asExpr<T1>::T_expr,            \
-_bz_typename asExpr<T2>::T_expr,                                          \
-    applic<_bz_typename asExpr<T1>::T_expr::T_numtype,                    \
-        _bz_typename asExpr<T2>::T_expr::T_numtype> > >                   \
-name(const T1& d1,                                                        \
-    const ETBase<T2>& d2)                                                 \
-{                                                                         \
-    return _bz_ArrayExpr<_bz_ArrayExprOp<_bz_typename                     \
-        asExpr<T1>::T_expr,                                               \
-        _bz_typename asExpr<T2>::T_expr,                                  \
-        applic<_bz_typename asExpr<T1>::T_expr::T_numtype,                \
-            _bz_typename asExpr<T2>::T_expr::T_numtype> > >               \
-        (d1, static_cast<const T2&>(d2));                                 \
-}                                                                         \
-                                                                          \
-template<int N1, class T_other>                                           \
-_bz_inline_et                                                             \
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N1>,                       \
-    _bz_typename asExpr<T_other>::T_expr,                                 \
-    applic<int,                                                           \
-        _bz_typename asExpr<T_other>::T_expr::T_numtype> > >              \
-name(IndexPlaceholder<N1> d1,                                             \
-    const T_other& d2)                                                    \
-{                                                                         \
-    return _bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N1>,            \
-        _bz_typename asExpr<T_other>::T_expr,                             \
-        applic<int,                                                       \
-            _bz_typename asExpr<T_other>::T_expr::T_numtype> > >(d1,d2);  \
-}                                                                         \
-
-
-// operator<< has been commented out because it causes ambiguity
-// with statements like "cout << A".  NEEDS_WORK
-// ditto operator<<
-
-BZ_DECLARE_ARRAY_ET(operator+,  Add)
-BZ_DECLARE_ARRAY_ET(operator-,  Subtract)
-BZ_DECLARE_ARRAY_ET(operator*,  Multiply)
-BZ_DECLARE_ARRAY_ET(operator/,  Divide)
-BZ_DECLARE_ARRAY_ET(operator%,  Modulo)
-BZ_DECLARE_ARRAY_ET(operator^,  BitwiseXor)
-BZ_DECLARE_ARRAY_ET(operator&,  BitwiseAnd)
-BZ_DECLARE_ARRAY_ET(operator|,  BitwiseOr)
-// BZ_DECLARE_ARRAY_ET(operator>>, ShiftRight)
-// BZ_DECLARE_ARRAY_ET(operator<<, ShiftLeft)
-BZ_DECLARE_ARRAY_ET(operator>,  Greater)
-BZ_DECLARE_ARRAY_ET(operator<,  Less)
-BZ_DECLARE_ARRAY_ET(operator>=, GreaterOrEqual)
-BZ_DECLARE_ARRAY_ET(operator<=, LessOrEqual)
-BZ_DECLARE_ARRAY_ET(operator==, Equal)
-BZ_DECLARE_ARRAY_ET(operator!=, NotEqual)
-BZ_DECLARE_ARRAY_ET(operator&&, LogicalAnd)
-BZ_DECLARE_ARRAY_ET(operator||, LogicalOr)
-
-BZ_DECLARE_ARRAY_ET(atan2,      _bz_atan2)
-BZ_DECLARE_ARRAY_ET(pow,        _bz_pow)
-
-#ifdef BZ_HAVE_COMPLEX_MATH
-BZ_DECLARE_ARRAY_ET(polar,     _bz_polar)
-#endif
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-BZ_DECLARE_ARRAY_ET(copysign,  _bz_copysign)
-BZ_DECLARE_ARRAY_ET(drem,      _bz_drem)
-BZ_DECLARE_ARRAY_ET(fmod,      _bz_fmod)
-BZ_DECLARE_ARRAY_ET(hypot,     _bz_hypot)
-BZ_DECLARE_ARRAY_ET(nextafter, _bz_nextafter)
-BZ_DECLARE_ARRAY_ET(remainder, _bz_remainder)
-BZ_DECLARE_ARRAY_ET(scalb,     _bz_scalb)
-BZ_DECLARE_ARRAY_ET(unordered, _bz_unordered)
-#endif
-
-/*
- * Unary functions and operators
- */
-
-#define BZ_DECLARE_ARRAY_ET_UOP(name, functor)                        \
-template<class T1>                                                    \
-_bz_inline_et                                                         \
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<                                   \
-    _bz_typename asExpr<T1>::T_expr,                                  \
-    functor<_bz_typename asExpr<T1>::T_expr::T_numtype> > >           \
-name(const ETBase<T1>& d1)                                            \
-{                                                                     \
-    return _bz_ArrayExpr<_bz_ArrayExprUnaryOp<                        \
-        _bz_typename asExpr<T1>::T_expr,                              \
-        functor<_bz_typename asExpr<T1>::T_expr::T_numtype> > >       \
-      (static_cast<const T1&>(d1));                                   \
-}
-
-BZ_DECLARE_ARRAY_ET_UOP(operator-, _bz_negate)
-
-// NEEDS_WORK: operator!, operator~
-
-BZ_DECLARE_ARRAY_ET_UOP(abs,   _bz_abs)
-BZ_DECLARE_ARRAY_ET_UOP(acos,  _bz_acos)
-BZ_DECLARE_ARRAY_ET_UOP(asin,  _bz_asin)
-BZ_DECLARE_ARRAY_ET_UOP(atan,  _bz_atan)
-BZ_DECLARE_ARRAY_ET_UOP(ceil,  _bz_ceil)
-BZ_DECLARE_ARRAY_ET_UOP(cexp,  _bz_cexp)
-BZ_DECLARE_ARRAY_ET_UOP(cos,   _bz_cos)
-BZ_DECLARE_ARRAY_ET_UOP(cosh,  _bz_cosh)
-BZ_DECLARE_ARRAY_ET_UOP(csqrt, _bz_csqrt)
-BZ_DECLARE_ARRAY_ET_UOP(exp,   _bz_exp)
-BZ_DECLARE_ARRAY_ET_UOP(fabs,  _bz_abs)
-BZ_DECLARE_ARRAY_ET_UOP(floor, _bz_floor)
-BZ_DECLARE_ARRAY_ET_UOP(log,   _bz_log)
-BZ_DECLARE_ARRAY_ET_UOP(log10, _bz_log10)
-BZ_DECLARE_ARRAY_ET_UOP(pow2,  _bz_pow2)
-BZ_DECLARE_ARRAY_ET_UOP(pow3,  _bz_pow3)
-BZ_DECLARE_ARRAY_ET_UOP(pow4,  _bz_pow4)
-BZ_DECLARE_ARRAY_ET_UOP(pow5,  _bz_pow5)
-BZ_DECLARE_ARRAY_ET_UOP(pow6,  _bz_pow6)
-BZ_DECLARE_ARRAY_ET_UOP(pow7,  _bz_pow7)
-BZ_DECLARE_ARRAY_ET_UOP(pow8,  _bz_pow8)
-BZ_DECLARE_ARRAY_ET_UOP(sin,   _bz_sin)
-BZ_DECLARE_ARRAY_ET_UOP(sinh,  _bz_sinh)
-BZ_DECLARE_ARRAY_ET_UOP(sqr,   _bz_sqr)
-BZ_DECLARE_ARRAY_ET_UOP(sqrt,  _bz_sqrt)
-BZ_DECLARE_ARRAY_ET_UOP(tan,   _bz_tan)
-BZ_DECLARE_ARRAY_ET_UOP(tanh,  _bz_tanh)
-
-#ifdef BZ_HAVE_COMPLEX_MATH
-BZ_DECLARE_ARRAY_ET_UOP(arg,   _bz_arg)
-BZ_DECLARE_ARRAY_ET_UOP(conj,  _bz_conj)
-#endif
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-BZ_DECLARE_ARRAY_ET_UOP(_class,  _bz__class)
-BZ_DECLARE_ARRAY_ET_UOP(ilogb,   _bz_ilogb)
-BZ_DECLARE_ARRAY_ET_UOP(itrunc,  _bz_itrunc)
-BZ_DECLARE_ARRAY_ET_UOP(nearest, _bz_nearest)
-BZ_DECLARE_ARRAY_ET_UOP(rsqrt,   _bz_rsqrt)
-BZ_DECLARE_ARRAY_ET_UOP(uitrunc, _bz_uitrunc)
-#endif
-
-#ifdef BZ_HAVE_IEEE_MATH
-
-// finite and trunc omitted: blitz-bugs/archive/0189.html
-BZ_DECLARE_ARRAY_ET_UOP(acosh,  _bz_acosh)
-BZ_DECLARE_ARRAY_ET_UOP(asinh,  _bz_asinh)
-BZ_DECLARE_ARRAY_ET_UOP(atanh,  _bz_atanh)
-BZ_DECLARE_ARRAY_ET_UOP(cbrt,   _bz_cbrt)
-BZ_DECLARE_ARRAY_ET_UOP(expm1,  _bz_expm1)
-BZ_DECLARE_ARRAY_ET_UOP(erf,    _bz_erf)
-BZ_DECLARE_ARRAY_ET_UOP(erfc,   _bz_erfc)
-// BZ_DECLARE_ARRAY_ET_UOP(finite, _bz_finite)
-BZ_DECLARE_ARRAY_ET_UOP(isnan,  _bz_isnan)
-BZ_DECLARE_ARRAY_ET_UOP(j0,     _bz_j0)
-BZ_DECLARE_ARRAY_ET_UOP(j1,     _bz_j1)
-BZ_DECLARE_ARRAY_ET_UOP(lgamma, _bz_lgamma)
-BZ_DECLARE_ARRAY_ET_UOP(logb,   _bz_logb)
-BZ_DECLARE_ARRAY_ET_UOP(log1p,  _bz_log1p)
-BZ_DECLARE_ARRAY_ET_UOP(rint,   _bz_rint)
-// BZ_DECLARE_ARRAY_ET_UOP(trunc,  _bz_trunc)
-BZ_DECLARE_ARRAY_ET_UOP(y0,     _bz_y0)
-BZ_DECLARE_ARRAY_ET_UOP(y1,     _bz_y1)
-#endif
-
-
-/*
- * User-defined expression template routines
- */
-
-#define BZ_DECLARE_FUNCTION(name)                                     \
-  template<class P_numtype>                                           \
-  struct name ## _impl {                                              \
-    typedef P_numtype T_numtype;                                      \
-    template<class T>                                                 \
-    static inline T apply(T x)                                        \
-    { return name(x); }                                               \
-                                                                      \
-    template<class T1>                                                \
-    static void prettyPrint(string& str,                              \
-        prettyPrintFormat& format, const T1& a)                       \
-    {                                                                 \
-        str += #name;                                                 \
-        str += "(";                                                   \
-        a.prettyPrint(str,format);                                    \
-        str += ")";                                                   \
-    }                                                                 \
-  };                                                                  \
-                                                                      \
-  BZ_DECLARE_ARRAY_ET_UOP(name, name ## _impl)
-
-#define BZ_DECLARE_FUNCTION_RET(name, return_type)                    \
-  template<class P_numtype>                                           \
-  struct name ## _impl {                                              \
-    typedef return_type T_numtype;                                    \
-    template<class T>                                                 \
-    static inline return_type apply(T x)                              \
-    { return name(x); }                                               \
-                                                                      \
-    template<class T1>                                                \
-    static void prettyPrint(string& str,                              \
-        prettyPrintFormat& format, const T1& a)                       \
-    {                                                                 \
-        str += #name;                                                 \
-        str += "(";                                                   \
-        a.prettyPrint(str,format);                                    \
-        str += ")";                                                   \
-    }                                                                 \
-  };                                                                  \
-                                                                      \
-  BZ_DECLARE_ARRAY_ET_UOP(name, name ## _impl)
-
-
-#define BZ_DECLARE_FUNCTION2(name)                                    \
-  template<class P_numtype1, class P_numtype2>                        \
-  struct name ## _impl {                                              \
-    typedef _bz_typename promote_trait<P_numtype1,                    \
-        P_numtype2>::T_promote T_numtype;                             \
-    template<class T1, class T2>                                      \
-    static inline T_numtype apply(T1 x, T2 y)                         \
-    { return name(x,y); }                                             \
-                                                                      \
-    template<class T1, class T2>                                      \
-    static void prettyPrint(string& str,                              \
-        prettyPrintFormat& format, const T1& a, const T2& b)          \
-    {                                                                 \
-        str += #name;                                                 \
-        str += "(";                                                   \
-        a.prettyPrint(str,format);                                    \
-        str += ",";                                                   \
-        b.prettyPrint(str,format);                                    \
-        str += ")";                                                   \
-    }                                                                 \
-  };                                                                  \
-                                                                      \
-  BZ_DECLARE_ARRAY_ET(name, name ## _impl)
-
-#define BZ_DECLARE_FUNCTION2_RET(name, return_type)                   \
-  template<class P_numtype1, class P_numtype2>                        \
-  struct name ## _impl {                                              \
-    typedef return_type T_numtype;                                    \
-    template<class T1, class T2>                                      \
-    static inline T_numtype apply(T1 x, T2 y)                         \
-    { return name(x,y); }                                             \
-                                                                      \
-    template<class T1, class T2>                                      \
-    static void prettyPrint(string& str,                              \
-        prettyPrintFormat& format, const T1& a, const T2& b)          \
-    {                                                                 \
-        str += #name;                                                 \
-        str += "(";                                                   \
-        a.prettyPrint(str,format);                                    \
-        str += ",";                                                   \
-        b.prettyPrint(str,format);                                    \
-        str += ")";                                                   \
-    }                                                                 \
-  };                                                                  \
-                                                                      \
-  BZ_DECLARE_ARRAY_ET(name, name ## _impl)
-
-BZ_NAMESPACE_END
-
-#endif
diff --git a/weave/blitz-20001213/blitz/array/eval.cc b/weave/blitz-20001213/blitz/array/eval.cc
deleted file mode 100644
index de4d4e8..0000000
--- a/weave/blitz-20001213/blitz/array/eval.cc
+++ /dev/null
@@ -1,1237 +0,0 @@
-/*
- * $Id$
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1998/02/25 20:04:01  tveldhui
- * Initial revision
- *
- */
-
-#ifndef BZ_ARRAYEVAL_CC
-#define BZ_ARRAYEVAL_CC
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/eval.cc> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * Assign an expression to an array.  For performance reasons, there are
- * several traversal mechanisms:
- *
- * - Index traversal scans through the destination array in storage order.
- *   The expression is evaluated using a TinyVector<int,N> operand.  This
- *   version is used only when there are index placeholders in the expression
- *   (see <blitz/indexexpr.h>)
- * - Stack traversal also scans through the destination array in storage
- *   order.  However, push/pop stack iterators are used.
- * - Fast traversal follows a Hilbert (or other) space-filling curve to
- *   improve cache reuse for stencilling operations.  Currently, the
- *   space filling curves must be generated by calling 
- *   generateFastTraversalOrder(TinyVector<int,N_dimensions>).
- * - 2D tiled traversal follows a tiled traversal, to improve cache reuse
- *   for 2D stencils.  Space filling curves have too much overhead to use
- *   in two-dimensions.
- *
- * _bz_tryFastTraversal is a helper class.  Fast traversals are only
- * attempted if the expression looks like a stencil -- it's at least
- * three-dimensional, has at least six array operands, and there are
- * no index placeholders in the expression.  These are all things which
- * can be checked at compile time, so the if()/else() syntax has been
- * replaced with this class template.
- */
-
-// Fast traversals require <set> from the ISO/ANSI C++ standard library
-#ifdef BZ_HAVE_STD
-
-template<_bz_bool canTryFastTraversal>
-struct _bz_tryFastTraversal {
-    template<class T_numtype, int N_rank, class T_expr, class T_update>
-    static _bz_bool tryFast(Array<T_numtype,N_rank>& array, 
-        BZ_ETPARM(T_expr) expr, T_update)
-    {
-        return _bz_false;
-    }
-};
-
-template<>
-struct _bz_tryFastTraversal<_bz_true> {
-    template<class T_numtype, int N_rank, class T_expr, class T_update>
-    static _bz_bool tryFast(Array<T_numtype,N_rank>& array, 
-        BZ_ETPARM(T_expr) expr, T_update)
-    {
-        // See if there's an appropriate space filling curve available.
-        // Currently fast traversals use an N-1 dimensional curve.  The
-        // Nth dimension column corresponding to each point on the curve
-        // is traversed in the normal fashion.
-        TraversalOrderCollection<N_rank-1> traversals;
-        TinyVector<int, N_rank - 1> traversalGridSize;
-
-        for (int i=0; i < N_rank - 1; ++i)
-            traversalGridSize[i] = array.length(array.ordering(i+1));
-
-#ifdef BZ_DEBUG_TRAVERSE
-cout << "traversalGridSize = " << traversalGridSize << endl;
-cout.flush();
-#endif
-
-        const TraversalOrder<N_rank-1>* order =
-            traversals.find(traversalGridSize);
-
-        if (order)
-        {
-#ifdef BZ_DEBUG_TRAVERSE
-    cerr << "Array<" << BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(T_numtype)
-         << ", " << N_rank << ">: Using stack traversal" << endl;
-#endif
-            // A curve was available -- use fast traversal.
-            array.evaluateWithFastTraversal(*order, expr, T_update());
-            return _bz_true;
-        }
-
-        return _bz_false;
-    }
-};
-
-#endif // BZ_HAVE_STD
-
-template<class T_numtype, int N_rank> template<class T_expr, class T_update>
-inline Array<T_numtype, N_rank>& 
-Array<T_numtype, N_rank>::evaluate(T_expr expr, 
-    T_update)
-{
-    // Check that all arrays have the same shape
-#ifdef BZ_DEBUG
-    if (!expr.shapeCheck(shape()))
-    {
-      if (assertFailMode == _bz_false)
-      {
-        cerr << "[Blitz++] Shape check failed: Module " << __FILE__
-             << " line " << __LINE__ << endl
-             << "          Expression: ";
-        prettyPrintFormat format(_bz_true);   // Use terse formatting
-        string str;
-        expr.prettyPrint(str, format);
-        cerr << str << endl ;
-      }
-
-#if 0
-// Shape dumping is broken by change to using string for prettyPrint
-             << "          Shapes: " << shape() << " = ";
-        prettyPrintFormat format2;
-        format2.setDumpArrayShapesMode();
-        expr.prettyPrint(cerr, format2);
-        cerr << endl;
-#endif
-        BZ_PRE_FAIL;
-    }
-#endif
-
-    BZPRECHECK(expr.shapeCheck(shape()),
-        "Shape check failed." << endl << "Expression:");
-
-    BZPRECHECK((T_expr::rank == N_rank) || (T_expr::numArrayOperands == 0), 
-        "Assigned rank " << T_expr::rank << " expression to rank " 
-        << N_rank << " array.");
-
-    /*
-     * Check that the arrays are not empty (e.g. length 0 arrays)
-     * This fixes a bug found by Peter Bienstman, 6/16/99, where
-     * Array<double,2> A(0,0),B(0,0); B=A(tensor::j,tensor::i);
-     * went into an infinite loop.
-     */
-
-    if (numElements() == 0)
-        return *this;
-
-#ifdef BZ_DEBUG_TRAVERSE
-cout << "T_expr::numIndexPlaceholders = " << T_expr::numIndexPlaceholders
-     << endl; cout.flush();
-#endif
-
-    // Tau profiling code.  Provide Tau with a pretty-printed version of
-    // the expression.
-    // NEEDS_WORK-- use a static initializer somehow.
-
-#ifdef BZ_TAU_PROFILING
-    static string exprDescription;
-    if (!exprDescription.length())   // faked static initializer
-    {
-        exprDescription = "A";
-        prettyPrintFormat format(_bz_true);   // Terse mode on
-        format.nextArrayOperandSymbol();
-        T_update::prettyPrint(exprDescription);
-        expr.prettyPrint(exprDescription, format);
-    }
-    TAU_PROFILE(" ", exprDescription, TAU_BLITZ);
-#endif
-
-    // Determine which evaluation mechanism to use 
-    if (T_expr::numIndexPlaceholders > 0)
-    {
-        // The expression involves index placeholders, so have to
-        // use index traversal rather than stack traversal.
-
-        if (N_rank == 1)
-            return evaluateWithIndexTraversal1(expr, T_update());
-        else
-            return evaluateWithIndexTraversalN(expr, T_update());
-    }
-    else {
-
-        // If this expression looks like an array stencil, then attempt to
-        // use a fast traversal order.
-        // Fast traversals require <set> from the ISO/ANSI C++ standard
-        // library.
-
-#ifdef BZ_HAVE_STD
-
-        enum { isStencil = (N_rank >= 3) && (T_expr::numArrayOperands > 6)
-            && (T_expr::numIndexPlaceholders == 0) };
-
-        if (_bz_tryFastTraversal<isStencil>::tryFast(*this, expr, T_update()))
-            return *this;
-
-#endif
-
-#ifdef BZ_ARRAY_2D_STENCIL_TILING
-        // Does this look like a 2-dimensional stencil on a largeish
-        // array?
-
-        if ((N_rank == 2) && (T_expr::numArrayOperands >= 5))
-        {
-            // Use a heuristic to determine whether a tiled traversal
-            // is desirable.  First, estimate how much L1 cache is needed 
-            // to achieve a high hit rate using the stack traversal.
-            // Try to err on the side of using tiled traversal even when
-            // it isn't strictly needed.
-
-            // Assumptions:
-            //    Stencil width 3
-            //    3 arrays involved in stencil
-            //    Uniform data type in arrays (all T_numtype)
-            
-            int cacheNeeded = 3 * 3 * sizeof(T_numtype) * length(ordering(0));
-            if (cacheNeeded > BZ_L1_CACHE_ESTIMATED_SIZE)
-                return evaluateWithTiled2DTraversal(expr, T_update());
-        }
-
-#endif
-
-        // If fast traversal isn't available or appropriate, then just
-        // do a stack traversal.
-        if (N_rank == 1)
-            return evaluateWithStackTraversal1(expr, T_update());
-        else
-            return evaluateWithStackTraversalN(expr, T_update());
-    }
-}
-
-template<class T_numtype, int N_rank> template<class T_expr, class T_update>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::evaluateWithStackTraversal1(
-    T_expr expr, T_update)
-{
-#ifdef BZ_DEBUG_TRAVERSE
-    BZ_DEBUG_MESSAGE("Array<" << BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(T_numtype)
-         << ", " << N_rank << ">: Using stack traversal");
-#endif
-    FastArrayIterator<T_numtype, N_rank> iter(*this);
-    iter.loadStride(firstRank);
-    expr.loadStride(firstRank);
-
-    _bz_bool useUnitStride = iter.isUnitStride(firstRank)
-          && expr.isUnitStride(firstRank);
-
-#ifdef BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-    int commonStride = expr.suggestStride(firstRank);
-    if (iter.suggestStride(firstRank) > commonStride)
-        commonStride = iter.suggestStride(firstRank);
-    bool useCommonStride = iter.isStride(firstRank,commonStride)
-        && expr.isStride(firstRank,commonStride);
-
- #ifdef BZ_DEBUG_TRAVERSE
-    BZ_DEBUG_MESSAGE("BZ_ARRAY_EXPR_USE_COMMON_STRIDE:" << endl
-        << "    commonStride = " << commonStride << " useCommonStride = "
-        << useCommonStride);
- #endif
-#else
-    int commonStride = 1;
-    bool useCommonStride = _bz_false;
-#endif
-
-    const T_numtype * last = iter.data() + length(firstRank) 
-        * stride(firstRank);
-
-    if (useUnitStride || useCommonStride)
-    {
-#ifdef BZ_USE_FAST_READ_ARRAY_EXPR
-
-#ifdef BZ_DEBUG_TRAVERSE
-    BZ_DEBUG_MESSAGE("BZ_USE_FAST_READ_ARRAY_EXPR with commonStride");
-#endif
-        int ubound = length(firstRank) * commonStride;
-        T_numtype* _bz_restrict data = const_cast<T_numtype*>(iter.data());
-
-        if (commonStride == 1)
-        {
- #ifndef BZ_ARRAY_STACK_TRAVERSAL_UNROLL
-            for (int i=0; i < ubound; ++i)
-                T_update::update(data[i], expr.fastRead(i));
- #else
-            int n1 = ubound & 3;
-            int i = 0;
-            for (; i < n1; ++i)
-                T_update::update(data[i], expr.fastRead(i));
-           
-            for (; i < ubound; i += 4)
-            {
-#ifndef BZ_ARRAY_STACK_TRAVERSAL_CSE_AND_ANTIALIAS
-                T_update::update(data[i], expr.fastRead(i));
-                T_update::update(data[i+1], expr.fastRead(i+1));
-                T_update::update(data[i+2], expr.fastRead(i+2));
-                T_update::update(data[i+3], expr.fastRead(i+3));
-#else
-                int t1 = i+1;
-                int t2 = i+2;
-                int t3 = i+3;
-
-                _bz_typename T_expr::T_numtype tmp1, tmp2, tmp3, tmp4;
-
-                tmp1 = expr.fastRead(i);
-                tmp2 = expr.fastRead(BZ_NO_PROPAGATE(t1));
-                tmp3 = expr.fastRead(BZ_NO_PROPAGATE(t2));
-                tmp4 = expr.fastRead(BZ_NO_PROPAGATE(t3));
-
-                T_update::update(data[i], BZ_NO_PROPAGATE(tmp1));
-                T_update::update(data[BZ_NO_PROPAGATE(t1)], tmp2);
-                T_update::update(data[BZ_NO_PROPAGATE(t2)], tmp3);
-                T_update::update(data[BZ_NO_PROPAGATE(t3)], tmp4);
-#endif
-            }
- #endif // BZ_ARRAY_STACK_TRAVERSAL_UNROLL
-
-        }
- #ifdef BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-        else {
-
-  #ifndef BZ_ARRAY_STACK_TRAVERSAL_UNROLL
-            for (int i=0; i < ubound; i += commonStride)
-                T_update::update(data[i], expr.fastRead(i));
-  #else
-            int n1 = (length(firstRank) & 3) * commonStride;
-
-            int i = 0;
-            for (; i < n1; i += commonStride)
-                T_update::update(data[i], expr.fastRead(i));
-
-            int strideInc = 4 * commonStride;
-            for (; i < ubound; i += strideInc)
-            {
-                T_update::update(data[i], expr.fastRead(i));
-                int i2 = i + commonStride;
-                T_update::update(data[i2], expr.fastRead(i2));
-                int i3 = i + 2 * commonStride;
-                T_update::update(data[i3], expr.fastRead(i3));
-                int i4 = i + 3 * commonStride;
-                T_update::update(data[i4], expr.fastRead(i4));
-            }
-  #endif  // BZ_ARRAY_STACK_TRAVERSAL_UNROLL
-        }
- #endif  // BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-
-#else   // ! BZ_USE_FAST_READ_ARRAY_EXPR
-
-#ifdef BZ_DEBUG_TRAVERSE
-    BZ_DEBUG_MESSAGE("Common stride, no fast read");
-#endif
-        while (iter.data() != last)
-        {
-            T_update::update(*const_cast<T_numtype*>(iter.data()), *expr);
-            iter.advance(commonStride);
-            expr.advance(commonStride);
-        }
-#endif
-    }
-    else {
-        while (iter.data() != last)
-        {
-            T_update::update(*const_cast<T_numtype*>(iter.data()), *expr);
-            iter.advance();
-            expr.advance();
-        }
-    }
-
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr, class T_update>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::evaluateWithStackTraversalN(
-    T_expr expr, T_update)
-{
-    /*
-     * A stack traversal replaces the usual nested loops:
-     *
-     * for (int i=A.lbound(firstDim); i <= A.ubound(firstDim); ++i)
-     *   for (int j=A.lbound(secondDim); j <= A.ubound(secondDim); ++j)
-     *     for (int k=A.lbound(thirdDim); k <= A.ubound(thirdDim); ++k)
-     *       A(i,j,k) = 0;
-     *
-     * with a stack data structure.  The stack allows this single
-     * routine to replace any number of nested loops.
-     *
-     * For each dimension (loop), these quantities are needed:
-     * - a pointer to the first element encountered in the loop
-     * - the stride associated with the dimension/loop
-     * - a pointer to the last element encountered in the loop
-     *
-     * The basic idea is that entering each loop is a "push" onto the
-     * stack, and exiting each loop is a "pop".  In practice, this
-     * routine treats accesses the stack in a random-access way,
-     * which confuses the picture a bit.  But conceptually, that's
-     * what is going on.
-     */
-
-    /*
-     * ordering(0) gives the dimension associated with the smallest
-     * stride (usually; the exceptions have to do with subarrays and
-     * are uninteresting).  We call this dimension maxRank; it will
-     * become the innermost "loop".
-     *
-     * Ordering the loops from ordering(N_rank-1) down to
-     * ordering(0) ensures that the largest stride is associated
-     * with the outermost loop, and the smallest stride with the
-     * innermost.  This is critical for good performance on
-     * cached machines.
-     */
-
-    const int maxRank = ordering(0);
-    // const int secondLastRank = ordering(1);
-
-    // Create an iterator for the array receiving the result
-    FastArrayIterator<T_numtype, N_rank> iter(*this);
-
-    // Set the initial stack configuration by pushing the pointer
-    // to the first element of the array onto the stack N times.
-
-    int i;
-    for (i=1; i < N_rank; ++i)
-    {
-        iter.push(i);
-        expr.push(i);
-    }
-
-    // Load the strides associated with the innermost loop.
-    iter.loadStride(maxRank);
-    expr.loadStride(maxRank);
-
-    /* 
-     * Is the stride in the innermost loop equal to 1?  If so,
-     * we might take advantage of this and generate more
-     * efficient code.
-     */
-    _bz_bool useUnitStride = iter.isUnitStride(maxRank)
-                          && expr.isUnitStride(maxRank);
-
-    /*
-     * Do all array operands share a common stride in the innermost
-     * loop?  If so, we can generate more efficient code (but only
-     * if this optimization has been enabled).
-     */
-#ifdef BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-    int commonStride = expr.suggestStride(maxRank);
-    if (iter.suggestStride(maxRank) > commonStride)
-        commonStride = iter.suggestStride(maxRank);
-    bool useCommonStride = iter.isStride(maxRank,commonStride)
-        && expr.isStride(maxRank,commonStride);
-
-#ifdef BZ_DEBUG_TRAVERSE
-    BZ_DEBUG_MESSAGE("BZ_ARRAY_EXPR_USE_COMMON_STRIDE" << endl
-        << "commonStride = " << commonStride << " useCommonStride = "
-        << useCommonStride);
-#endif
-
-#else
-    int commonStride = 1;
-    bool useCommonStride = _bz_false;
-#endif
-
-    /*
-     * The "last" array contains a pointer to the last element
-     * encountered in each "loop".
-     */
-    const T_numtype* last[N_rank];
-
-    // Set up the initial state of the "last" array
-    for (i=1; i < N_rank; ++i)
-        last[i] = iter.data() + length(ordering(i)) * stride(ordering(i));
-
-    int lastLength = length(maxRank);
-    int firstNoncollapsedLoop = 1;
-
-#ifdef BZ_COLLAPSE_LOOPS
-
-    /*
-     * This bit of code handles collapsing loops.  When possible,
-     * the N nested loops are converted into a single loop (basically,
-     * the N-dimensional array is treated as a long vector).
-     * This is important for cases where the length of the innermost
-     * loop is very small, for example a 100x100x3 array.
-     * If this code can't collapse all the loops into a single loop,
-     * it will collapse as many loops as possible starting from the
-     * innermost and working out.
-     */
-
-    // Collapse loops when possible
-    for (i=1; i < N_rank; ++i)
-    {
-        // Figure out which pair of loops we are considering combining.
-        int outerLoopRank = ordering(i);
-        int innerLoopRank = ordering(i-1);
-
-        /*
-         * The canCollapse() routines look at the strides and extents
-         * of the loops, and determine if they can be combined into
-         * one loop.
-         */
-
-        if (canCollapse(outerLoopRank,innerLoopRank) 
-          && expr.canCollapse(outerLoopRank,innerLoopRank))
-        {
-#ifdef BZ_DEBUG_TRAVERSE
-            cout << "Collapsing " << outerLoopRank << " and " 
-                 << innerLoopRank << endl;
-#endif
-            lastLength *= length(outerLoopRank);
-            firstNoncollapsedLoop = i+1;
-        }
-        else  
-            break;
-    }
-
-#endif // BZ_COLLAPSE_LOOPS
-
-    /*
-     * Now we actually perform the loops.  This while loop contains
-     * two parts: first, the innermost loop is performed.  Then we
-     * exit the loop, and pop our way down the stack until we find
-     * a loop that isn't completed.  We then restart the inner loops
-     * and push them onto the stack.
-     */
-
-    while (true) {
-
-        /*
-         * This bit of code handles the innermost loop.  It would look
-         * a lot simpler if it weren't for unit stride and common stride
-         * optimizations; these clutter up the code with multiple versions.
-         */
-
-        if ((useUnitStride) || (useCommonStride))
-        {
-#ifdef BZ_USE_FAST_READ_ARRAY_EXPR
-
-            /*
-             * The check for BZ_USE_FAST_READ_ARRAY_EXPR can probably
-             * be taken out.  This was put in place while the unit stride/
-             * common stride optimizations were being implemented and
-             * tested.
-             */
-
-            // Calculate the end of the innermost loop
-            int ubound = lastLength * commonStride;
-
-            /*
-             * This is a real kludge.  I didn't want to have to write
-             * a const and non-const version of FastArrayIterator, so I use a
-             * const iterator and cast away const.  This could
-             * probably be avoided with some trick, but the whole routine
-             * is ugly, so why bother.
-             */
-
-            T_numtype* _bz_restrict data = const_cast<T_numtype*>(iter.data());
-
-            /*
-             * BZ_NEEDS_WORK-- need to implement optional unrolling.
-             */
-            if (commonStride == 1)
-            {
-                for (int i=0; i < ubound; ++i)
-                    T_update::update(data[i], expr.fastRead(i));
-            }
-#ifdef BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-            else {
-                for (int i=0; i < ubound; i += commonStride)
-                    T_update::update(data[i], expr.fastRead(i));
-            }
-#endif
-            /*
-             * Tidy up for the fact that we haven't actually been
-             * incrementing the iterators in the innermost loop, by
-             * faking it afterward.
-             */
-            iter.advance(lastLength * commonStride);
-            expr.advance(lastLength * commonStride);
-#else        
-            // !BZ_USE_FAST_READ_ARRAY_EXPR
-            // This bit of code not really needed; should remove at some
-            // point, along with the test for BZ_USE_FAST_READ_ARRAY_EXPR 
-
-            T_numtype * _bz_restrict end = const_cast<T_numtype*>(iter.data())
-                + lastLength;
-
-            while (iter.data() != end) 
-            {
-                T_update::update(*const_cast<T_numtype*>(iter.data()), *expr);
-                iter.advance(commonStride);
-                expr.advance(commonStride);
-            }
-#endif
-        }
-        else {
-            /*
-             * We don't have a unit stride or common stride in the innermost
-             * loop.  This is going to hurt performance.  Luckily 95% of
-             * the time, we hit the cases above.
-             */
-            T_numtype * _bz_restrict end = const_cast<T_numtype*>(iter.data())
-                + lastLength * stride(maxRank);
-
-            while (iter.data() != end)
-            {
-                T_update::update(*const_cast<T_numtype*>(iter.data()), *expr);
-                iter.advance();
-                expr.advance();
-            }
-        }
-
-
-        /*
-         * We just finished the innermost loop.  Now we pop our way down
-         * the stack, until we hit a loop that hasn't completed yet.
-         */ 
-        int j = firstNoncollapsedLoop;
-        for (; j < N_rank; ++j)
-        {
-            // Get the next loop
-            int r = ordering(j);
-
-            // Pop-- this restores the data pointers to the first element
-            // encountered in the loop.
-            iter.pop(j);
-            expr.pop(j);
-
-            // Load the stride associated with this loop, and increment
-            // once.
-            iter.loadStride(r);
-            expr.loadStride(r);
-            iter.advance();
-            expr.advance();
-
-            // If we aren't at the end of this loop, then stop popping.
-            if (iter.data() != last[j])
-                break;
-        }
-
-        // Are we completely done?
-        if (j == N_rank)
-            break;
-
-        // No, so push all the inner loops back onto the stack.
-        for (; j >= firstNoncollapsedLoop; --j)
-        {
-            int r2 = ordering(j-1);
-            iter.push(j);
-            expr.push(j);
-            last[j-1] = iter.data() + length(r2) * stride(r2);
-        }
-
-        // Load the stride for the innermost loop again.
-        iter.loadStride(maxRank);
-        expr.loadStride(maxRank);
-    }
-
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr, class T_update>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::evaluateWithIndexTraversal1(
-    T_expr expr, T_update)
-{
-    TinyVector<int,N_rank> index;
-
-    if (stride(firstRank) == 1)
-    {
-        T_numtype * _bz_restrict iter = data_;
-        int last = ubound(firstRank);
-
-        for (index[0] = lbound(firstRank); index[0] <= last;
-            ++index[0])
-        {
-            T_update::update(iter[index[0]], T_numtype(expr(index)));
-        }
-    }
-    else {
-        FastArrayIterator<T_numtype, N_rank> iter(*this);
-        iter.loadStride(0);
-        int last = ubound(firstRank);
-
-        for (index[0] = lbound(firstRank); index[0] <= last;
-            ++index[0])
-        {
-            T_update::update(*const_cast<T_numtype*>(iter.data()), 
-                expr(index));
-            iter.advance();
-        }
-    }
-
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr, class T_update>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::evaluateWithIndexTraversalN(
-    T_expr expr, T_update)
-{
-    // Do a stack-type traversal for the destination array and use
-    // index traversal for the source expression
-   
-    const int maxRank = ordering(0);
-
-#ifdef BZ_DEBUG_TRAVERSE
-    const int secondLastRank = ordering(1);
-
-cout << "Index traversal: N_rank = " << N_rank << endl;
-cout << "maxRank = " << maxRank << " secondLastRank = " << secondLastRank
-     << endl;
-cout.flush();
-#endif
-
-    FastArrayIterator<T_numtype, N_rank> iter(*this);
-    for (int i=1; i < N_rank; ++i)
-        iter.push(ordering(i));
-
-    iter.loadStride(maxRank);
-
-    TinyVector<int,N_rank> index, last;
-
-    index = storage_.base();
-    last = storage_.base() + length_;
-
-    // int lastLength = length(maxRank);
-
-    while (true) {
-
-        for (index[maxRank] = base(maxRank); 
-             index[maxRank] < last[maxRank]; 
-             ++index[maxRank])
-        {
-#ifdef BZ_DEBUG_TRAVERSE
-#if 0
-    cout << "(" << index[0] << "," << index[1] << ") " << endl;
-    cout.flush();
-#endif
-#endif
-
-            T_update::update(*const_cast<T_numtype*>(iter.data()), expr(index));
-            iter.advance();
-        }
-
-        int j = 1;
-        for (; j < N_rank; ++j)
-        {
-            iter.pop(ordering(j));
-            iter.loadStride(ordering(j));
-            iter.advance();
-
-            index[ordering(j-1)] = base(ordering(j-1));
-            ++index[ordering(j)];
-            if (index[ordering(j)] != last[ordering(j)])
-                break;
-        }
-
-        if (j == N_rank)
-            break;
-
-        for (; j > 0; --j)
-        {
-            iter.push(ordering(j));
-        }
-        iter.loadStride(maxRank);
-    }
-
-    return *this; 
-}
-
-// Fast traversals require <set> from the ISO/ANSI C++ standard library
-
-#ifdef BZ_HAVE_STD
-
-template<class T_numtype, int N_rank> template<class T_expr, class T_update>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::evaluateWithFastTraversal(
-    const TraversalOrder<N_rank - 1>& order, 
-    T_expr expr,
-    T_update)
-{
-    const int maxRank = ordering(0);
-
-#ifdef BZ_DEBUG_TRAVERSE
-    const int secondLastRank = ordering(1);
-
-cerr << "maxRank = " << maxRank << " secondLastRank = " << secondLastRank
-     << endl;
-#endif
-
-    FastArrayIterator<T_numtype, N_rank> iter(*this);
-    iter.push(0);
-    expr.push(0);
-
-    _bz_bool useUnitStride = iter.isUnitStride(maxRank) 
-                          && expr.isUnitStride(maxRank);
-
-#ifdef BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-    int commonStride = expr.suggestStride(maxRank);
-    if (iter.suggestStride(maxRank) > commonStride)
-        commonStride = iter.suggestStride(maxRank);
-    bool useCommonStride = iter.isStride(maxRank,commonStride)
-        && expr.isStride(maxRank,commonStride);
-#else
-    int commonStride = 1;
-    bool useCommonStride = _bz_false;
-#endif
-
-    int lastLength = length(maxRank);
-
-    for (int i=0; i < order.length(); ++i)
-    {
-        iter.pop(0);
-        expr.pop(0);
-
-#ifdef BZ_DEBUG_TRAVERSE
-    cerr << "Traversing: " << order[i] << endl;
-#endif
-        // Position the iterator at the start of the next column       
-        for (int j=1; j < N_rank; ++j)
-        {
-            iter.loadStride(ordering(j));
-            expr.loadStride(ordering(j));
-
-            int offset = order[i][j-1];
-            iter.advance(offset);
-            expr.advance(offset);
-        }
-
-        iter.loadStride(maxRank);
-        expr.loadStride(maxRank);
-
-        // Evaluate the expression along the column
-
-        if ((useUnitStride) || (useCommonStride))
-        {
-            T_numtype* _bz_restrict last = const_cast<T_numtype*>(iter.data()) 
-                + lastLength * commonStride;
-
-#ifdef BZ_USE_FAST_READ_ARRAY_EXPR
-            int ubound = lastLength * commonStride;
-            T_numtype* _bz_restrict data = const_cast<T_numtype*>(iter.data());
-
-            if (commonStride == 1)
-            {            
- #ifndef BZ_ARRAY_FAST_TRAVERSAL_UNROLL
-                for (int i=0; i < ubound; ++i)
-                    T_update::update(data[i], expr.fastRead(i));
- #else
-                int n1 = ubound & 3;
-                int i=0;
-                for (; i < n1; ++i)
-                    T_update::update(data[i], expr.fastRead(i));
-
-                for (; i < ubound; i += 4)
-                {
-                    T_update::update(data[i], expr.fastRead(i));
-                    T_update::update(data[i+1], expr.fastRead(i+1));
-                    T_update::update(data[i+2], expr.fastRead(i+2));
-                    T_update::update(data[i+3], expr.fastRead(i+3));
-                }
- #endif  // BZ_ARRAY_FAST_TRAVERSAL_UNROLL
-            }
- #ifdef BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-            else {
-                for (int i=0; i < ubound; i += commonStride)
-                    T_update::update(data[i], expr.fastRead(i));
-            }
- #endif // BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-
-            iter.advance(lastLength * commonStride);
-            expr.advance(lastLength * commonStride);
-#else   // ! BZ_USE_FAST_READ_ARRAY_EXPR
-            while (iter.data() != last)
-            {
-                T_update::update(*const_cast<T_numtype*>(iter.data()), *expr);
-                iter.advance(commonStride);
-                expr.advance(commonStride);
-            }
-#endif  // BZ_USE_FAST_READ_ARRAY_EXPR
-
-        }
-        else {
-            // No common stride
-
-            T_numtype* _bz_restrict last = const_cast<T_numtype*>(iter.data()) 
-                + lastLength * stride(maxRank);
-
-            while (iter.data() != last)
-            {
-                T_update::update(*const_cast<T_numtype*>(iter.data()), *expr);
-                iter.advance();
-                expr.advance();
-            }
-        }
-    }
-
-    return *this;
-}
-#endif // BZ_HAVE_STD
-
-#ifdef BZ_ARRAY_2D_NEW_STENCIL_TILING
-
-#ifdef BZ_ARRAY_2D_STENCIL_TILING
-
-template<class T_numtype, int N_rank> template<class T_expr, class T_update>
-inline Array<T_numtype, N_rank>& 
-Array<T_numtype, N_rank>::evaluateWithTiled2DTraversal(
-    T_expr expr, T_update)
-{
-    const int minorRank = ordering(0);
-    const int majorRank = ordering(1);
-
-    FastArrayIterator<T_numtype, N_rank> iter(*this);
-    iter.push(0);
-    expr.push(0);
-
-#ifdef BZ_2D_STENCIL_DEBUG
-    int count = 0;
-#endif
-
-    _bz_bool useUnitStride = iter.isUnitStride(minorRank)
-                          && expr.isUnitStride(minorRank);
-
-#ifdef BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-    int commonStride = expr.suggestStride(minorRank);
-    if (iter.suggestStride(minorRank) > commonStride)
-        commonStride = iter.suggestStride(minorRank);
-    bool useCommonStride = iter.isStride(minorRank,commonStride)
-        && expr.isStride(minorRank,commonStride);
-#else
-    int commonStride = 1;
-    bool useCommonStride = _bz_false;
-#endif
-
-    // Determine if a common major stride exists
-    int commonMajorStride = expr.suggestStride(majorRank);
-    if (iter.suggestStride(majorRank) > commonMajorStride)
-        commonMajorStride = iter.suggestStride(majorRank);
-    bool haveCommonMajorStride = iter.isStride(majorRank,commonMajorStride)
-        && expr.isStride(majorRank,commonMajorStride);
-
-
-    int maxi = length(majorRank);
-    int maxj = length(minorRank);
-
-    const int tileHeight = 16, tileWidth = 3;
-
-    int bi, bj;
-    for (bi=0; bi < maxi; bi += tileHeight)
-    {
-        int ni = bi + tileHeight;
-        if (ni > maxi)
-            ni = maxi;
-
-        // Move back to the beginning of the array
-        iter.pop(0);
-        expr.pop(0);
-
-        // Move to the start of this tile row
-        iter.loadStride(majorRank);
-        iter.advance(bi);
-        expr.loadStride(majorRank);
-        expr.advance(bi);
-
-        // Save this position
-        iter.push(1);
-        expr.push(1);
-
-        for (bj=0; bj < maxj; bj += tileWidth)
-        {
-            // Move to the beginning of the tile row
-            iter.pop(1);
-            expr.pop(1);
-
-            // Move to the top of the current tile (bi,bj)
-            iter.loadStride(minorRank);
-            iter.advance(bj);
-            expr.loadStride(minorRank);
-            expr.advance(bj);
-
-            if (bj + tileWidth <= maxj)
-            {
-                // Strip mining
-
-                if ((useUnitStride) && (haveCommonMajorStride))
-                {
-                    int offset = 0;
-                    T_numtype* _bz_restrict data = const_cast<T_numtype*>
-                        (iter.data());
-
-                    for (int i=bi; i < ni; ++i)
-                    {
-                        _bz_typename T_expr::T_numtype tmp1, tmp2, tmp3;
-
-                        // Common subexpression elimination -- compilers
-                        // won't necessarily do this on their own.
-                        int t1 = offset+1;
-                        int t2 = offset+2;
-
-                        tmp1 = expr.fastRead(offset);
-                        tmp2 = expr.fastRead(t1);
-                        tmp3 = expr.fastRead(t2);
-
-                        T_update::update(data[0], tmp1);
-                        T_update::update(data[1], tmp2);
-                        T_update::update(data[2], tmp3);
-
-                        offset += commonMajorStride;
-                        data += commonMajorStride;
-
-#ifdef BZ_2D_STENCIL_DEBUG
-    count += 3;
-#endif
-                    }
-                }
-                else {
-
-                    for (int i=bi; i < ni; ++i)
-                    {
-                        iter.loadStride(minorRank);
-                        expr.loadStride(minorRank);
-
-                        // Loop through current row elements
-                        T_update::update(*const_cast<T_numtype*>(iter.data()),
-                            *expr);
-                        iter.advance();
-                        expr.advance();
-
-                        T_update::update(*const_cast<T_numtype*>(iter.data()),
-                            *expr);
-                        iter.advance();
-                        expr.advance();
-
-                        T_update::update(*const_cast<T_numtype*>(iter.data()),
-                            *expr);
-                        iter.advance(-2);
-                        expr.advance(-2);
-
-                        iter.loadStride(majorRank);
-                        expr.loadStride(majorRank);
-                        iter.advance();
-                        expr.advance();
-
-#ifdef BZ_2D_STENCIL_DEBUG
-    count += 3;
-#endif
-
-                    }
-                }
-            }
-            else {
-
-                // This code handles partial tiles at the bottom of the
-                // array.
-
-                for (int j=bj; j < maxj; ++j)
-                {
-                    iter.loadStride(majorRank);
-                    expr.loadStride(majorRank);
-
-                    for (int i=bi; i < ni; ++i)
-                    {
-                        T_update::update(*const_cast<T_numtype*>(iter.data()),
-                            *expr);
-                        iter.advance();
-                        expr.advance();
-#ifdef BZ_2D_STENCIL_DEBUG
-    ++count;
-#endif
-
-                    }
-
-                    // Move back to the top of this column
-                    iter.advance(bi-ni);
-                    expr.advance(bi-ni);
-
-                    // Move over to the next column
-                    iter.loadStride(minorRank);
-                    expr.loadStride(minorRank);
-
-                    iter.advance();
-                    expr.advance();
-                }
-            }
-        }
-    }
-
-#ifdef BZ_2D_STENCIL_DEBUG
-    cout << "BZ_2D_STENCIL_DEBUG: count = " << count << endl;
-#endif
-
-    return *this;
-}
-
-#endif // BZ_ARRAY_2D_STENCIL_TILING
-#endif // BZ_ARRAY_2D_NEW_STENCIL_TILING
-
-
-
-#ifndef BZ_ARRAY_2D_NEW_STENCIL_TILING
-
-#ifdef BZ_ARRAY_2D_STENCIL_TILING
-
-template<class T_numtype, int N_rank> template<class T_expr, class T_update>
-inline Array<T_numtype, N_rank>& 
-Array<T_numtype, N_rank>::evaluateWithTiled2DTraversal(
-    T_expr expr, T_update)
-{
-    const int minorRank = ordering(0);
-    const int majorRank = ordering(1);
-
-    const int blockSize = 16;
-    
-    FastArrayIterator<T_numtype, N_rank> iter(*this);
-    iter.push(0);
-    expr.push(0);
-
-    _bz_bool useUnitStride = iter.isUnitStride(minorRank)
-                          && expr.isUnitStride(minorRank);
-
-#ifdef BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-    int commonStride = expr.suggestStride(minorRank);
-    if (iter.suggestStride(minorRank) > commonStride)
-        commonStride = iter.suggestStride(minorRank);
-    bool useCommonStride = iter.isStride(minorRank,commonStride)
-        && expr.isStride(minorRank,commonStride);
-#else
-    int commonStride = 1;
-    bool useCommonStride = _bz_false;
-#endif
-
-    int maxi = length(majorRank);
-    int maxj = length(minorRank);
-
-    int bi, bj;
-    for (bi=0; bi < maxi; bi += blockSize)
-    {
-        int ni = bi + blockSize;
-        if (ni > maxi)
-            ni = maxi;
-
-        for (bj=0; bj < maxj; bj += blockSize)
-        {
-            int nj = bj + blockSize;
-            if (nj > maxj)
-                nj = maxj;
-
-            // Move to the beginning of the array
-            iter.pop(0);
-            expr.pop(0);
-
-            // Move to the beginning of the tile (bi,bj)
-            iter.loadStride(majorRank);
-            iter.advance(bi);
-            iter.loadStride(minorRank);
-            iter.advance(bj);
-
-            expr.loadStride(majorRank);
-            expr.advance(bi);
-            expr.loadStride(minorRank);
-            expr.advance(bj);
-
-            // Loop through tile rows
-            for (int i=bi; i < ni; ++i)
-            {
-                // Save the beginning of this tile row
-                iter.push(1);
-                expr.push(1);
-
-                // Load the minor stride
-                iter.loadStride(minorRank);
-                expr.loadStride(minorRank);
-
-                if (useUnitStride)
-                {
-                    T_numtype* _bz_restrict data = const_cast<T_numtype*>
-                        (iter.data());
-
-                    int ubound = (nj-bj);
-                    for (int j=0; j < ubound; ++j)
-                        T_update::update(data[j], expr.fastRead(j));
-                }
-#ifdef BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-                else if (useCommonStride)
-                {
-                    int ubound = (nj-bj) * commonStride;
-                    T_numtype* _bz_restrict data = const_cast<T_numtype*>
-                        (iter.data());
-
-                    for (int j=0; j < ubound; j += commonStride)
-                        T_update::update(data[j], expr.fastRead(j));
-                }
-#endif
-                else {
-                    for (int j=bj; j < nj; ++j)
-                    {
-                        // Loop through current row elements
-                        T_update::update(*const_cast<T_numtype*>(iter.data()), 
-                            *expr);
-                        iter.advance();
-                        expr.advance();
-                    }
-                }
-
-                // Move back to the beginning of the tile row, then
-                // move to the next row
-                iter.pop(1);
-                iter.loadStride(majorRank);
-                iter.advance(1);
-
-                expr.pop(1);
-                expr.loadStride(majorRank);
-                expr.advance(1);
-            }
-        }
-    }
-
-    return *this;
-}
-#endif // BZ_ARRAY_2D_STENCIL_TILING
-#endif // BZ_ARRAY_2D_NEW_STENCIL_TILING
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYEVAL_CC
-
diff --git a/weave/blitz-20001213/blitz/array/expr.h b/weave/blitz-20001213/blitz/array/expr.h
deleted file mode 100644
index 8e169f16..0000000
--- a/weave/blitz-20001213/blitz/array/expr.h
+++ /dev/null
@@ -1,725 +0,0 @@
-/***************************************************************************
- * blitz/arrayexpr.h     Array<T,N> expression templates
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_ARRAYEXPR_H
-#define BZ_ARRAYEXPR_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/expr.h> must be included via <blitz/array.h>
-#endif
-
-#ifndef BZ_OPS_H
- #include <blitz/ops.h>
-#endif
-
-#ifndef BZ_PRETTYPRINT_H
- #include <blitz/prettyprint.h>
-#endif
-
-#ifndef BZ_SHAPECHECK_H
- #include <blitz/shapecheck.h>
-#endif
-
-#ifndef BZ_NUMINQUIRE_H
- #include <blitz/numinquire.h>
-#endif
-
-/*
- * The array expression templates iterator interface is followed by
- * these classes:
- *
- * FastArrayIterator          <blitz/array/fastiter.h>
- * _bz_ArrayExpr              <blitz/array/expr.h>
- * _bz_ArrayExprOp                    "
- * _bz_ArrayExprUnaryOp               "
- * _bz_ArrayExprConstant              "
- * _bz_ArrayMap               <blitz/array/map.h>
- * _bz_ArrayExprReduce        <blitz/array/reduce.h>
- * IndexPlaceholder           <blitz/indexexpr.h>
- */
-
-BZ_NAMESPACE(blitz)
-
-template<class T1, class T2>
-class _bz_ExprPair {
-public:
-    _bz_ExprPair(const T1& a, const T2& b)
-        : first_(a), second_(b)
-    { }
-
-    const T1& first() const
-    { return first_; }
-
-    const T2& second() const
-    { return second_; }
-
-protected:
-    T1 first_;
-    T2 second_;
-};
-
-template<class T1, class T2>
-inline _bz_ExprPair<T1,T2> makeExprPair(const T1& a, const T2& b)
-{
-    return _bz_ExprPair<T1,T2>(a,b);
-}
-
-template<class P_expr>
-class _bz_ArrayExpr 
-#ifdef BZ_NEW_EXPRESSION_TEMPLATES
-    : public ETBase<_bz_ArrayExpr<P_expr> >
-#endif
-{
-
-public:
-    typedef P_expr T_expr;
-    typedef _bz_typename T_expr::T_numtype T_numtype;
-    typedef T_expr T_ctorArg1;
-    typedef int    T_ctorArg2;    // dummy
-
-    enum { numArrayOperands = BZ_ENUM_CAST(P_expr::numArrayOperands),
-        numIndexPlaceholders = BZ_ENUM_CAST(P_expr::numIndexPlaceholders),
-        rank = BZ_ENUM_CAST(P_expr::rank) };
-
-    _bz_ArrayExpr(const _bz_ArrayExpr<P_expr>& a)
-        : iter_(a.iter_)
-    { }
-
-#ifdef BZ_NEW_EXPRESSION_TEMPLATES
-    template<class T>
-    _bz_ArrayExpr(const T& a)
-        : iter_(a)
-    { }
-#else
-
-    _bz_ArrayExpr(BZ_ETPARM(T_expr) a)
-        : iter_(a)
-    { }
-
-    _bz_ArrayExpr(BZ_ETPARM(_bz_typename T_expr::T_ctorArg1) a)
-        : iter_(a)
-    { }
-#endif
-
-    template<class T1, class T2>
-    _bz_ArrayExpr(BZ_ETPARM(T1) a, BZ_ETPARM(T2) b)
-        : iter_(a, b)
-    { }
-
-    template<class T1, class T2, class T3>
-    _bz_ArrayExpr(BZ_ETPARM(T1) a, BZ_ETPARM(T2) b, BZ_ETPARM(T3) c)
-        : iter_(a, b, c)
-    { }
-
-    template<class T1, class T2>
-    _bz_ArrayExpr(const _bz_ExprPair<T1,T2>& pair)
-        : iter_(pair.first(), pair.second())
-    { }
-
-    T_numtype operator*()
-    { return *iter_; }
-
-#ifdef BZ_ARRAY_EXPR_PASS_INDEX_BY_VALUE
-    template<int N_rank>
-    T_numtype operator()(TinyVector<int, N_rank> i)
-    { return iter_(i); }
-#else
-    template<int N_rank>
-    T_numtype operator()(const TinyVector<int, N_rank>& i)
-    { return iter_(i); }
-#endif
-
-    int ascending(int rank)
-    { return iter_.ascending(rank); }
-
-    int ordering(int rank)
-    { return iter_.ordering(rank); }
-
-    int lbound(int rank)
-    { return iter_.lbound(rank); }
-
-    int ubound(int rank)
-    { return iter_.ubound(rank); }
-
-    void push(int position)
-    { iter_.push(position); }
-
-    void pop(int position)
-    { iter_.pop(position); }
-
-    void advance()
-    { iter_.advance(); }
-
-    void advance(int n)
-    { iter_.advance(n); }
-
-    void loadStride(int rank)
-    { iter_.loadStride(rank); }
-
-    _bz_bool isUnitStride(int rank) const
-    { return iter_.isUnitStride(rank); }
-
-    void advanceUnitStride()
-    { iter_.advanceUnitStride(); }
-
-    _bz_bool canCollapse(int outerLoopRank, int innerLoopRank) const
-    { 
-        // BZ_DEBUG_MESSAGE("_bz_ArrayExpr<>::canCollapse()");
-        return iter_.canCollapse(outerLoopRank, innerLoopRank); 
-    }
-
-    T_numtype operator[](int i)
-    { return iter_[i]; }
-
-    T_numtype fastRead(int i)
-    { return iter_.fastRead(i); }
-
-    int suggestStride(int rank) const
-    { return iter_.suggestStride(rank); }
-
-    _bz_bool isStride(int rank, int stride) const
-    { return iter_.isStride(rank,stride); }
-
-    void prettyPrint(string& str) const
-    {
-        prettyPrintFormat format(_bz_true);  // Terse formatting by default
-        iter_.prettyPrint(str, format);
-    }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    { iter_.prettyPrint(str, format); }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape& shape)
-    { return iter_.shapeCheck(shape); }
-
-    template<int N_rank>
-    void moveTo(const TinyVector<int,N_rank>& i)
-    {
-        iter_.moveTo(i);
-    }
-
-protected:
-    _bz_ArrayExpr() { }
-
-    T_expr iter_;
-};
-
-struct bounds {
-    static int compute_ascending(int rank, int ascending1, int ascending2)
-    {
-        // The value INT_MIN indicates that there are no arrays
-        // in a subtree of the expression.  This logic returns
-        // whichever ascending is available.  If there are two
-        // conflicting ascending values, this is an error.
-
-        if (ascending1 == ascending2)
-            return ascending1;
-        else if (ascending1 == INT_MIN)
-            return ascending2;
-        else if (ascending2 == INT_MIN)
-            return ascending1;
-
-        BZ_DEBUG_MESSAGE("Two array operands have different"
-            << endl << "ascending flags: for rank " << rank 
-            << ", the flags are " << ascending1 << " and " 
-            << ascending2 << endl);
-        BZ_PRE_FAIL;
-        return 0;
-    }
-
-    static int compute_ordering(int rank, int order1, int order2)
-    {
-        // The value INT_MIN indicates that there are no arrays
-        // in a subtree of the expression.  This logic returns
-        // whichever ordering is available.  If there are two
-        // conflicting ordering values, this is an error.
-
-        if (order1 == order2)
-            return order1;
-        else if (order1 == INT_MIN)
-            return order2;
-        else if (order2 == INT_MIN)
-            return order1;
-
-        BZ_DEBUG_MESSAGE("Two array operands have different"
-            << endl << "orders: for rank " << rank << ", the orders are "
-            << order1 << " and " << order2 << endl);
-        BZ_PRE_FAIL;
-        return 0;
-    }
-
-    static int compute_lbound(int rank, int lbound1, int lbound2)
-    {
-        // The value INT_MIN indicates that there are no arrays
-        // in a subtree of the expression.  This logic returns
-        // whichever lbound is available.  If there are two
-        // conflicting lbound values, this is an error.
-
-        if (lbound1 == lbound2)
-            return lbound1;
-        else if (lbound1 == INT_MIN)
-            return lbound2;
-        else if (lbound2 == INT_MIN)
-            return lbound1;
-
-        BZ_DEBUG_MESSAGE("Two array operands have different"
-            << endl << "lower bounds: in rank " << rank << ", the bounds are "
-            << lbound1 << " and " << lbound2 << endl);
-        BZ_PRE_FAIL;
-        return 0;
-    }
-
-    static int compute_ubound(int rank, int ubound1, int ubound2)
-    {
-        // The value INT_MAX indicates that there are no arrays
-        // in a subtree of the expression.  This logic returns
-        // whichever ubound is available.  If there are two
-        // conflicting ubound values, this is an error.
-
-        if (ubound1 == ubound2)
-            return ubound1;
-        else if (ubound1 == INT_MAX)
-            return ubound2;
-        else if (ubound2 == INT_MAX)
-            return ubound1;
-
-        BZ_DEBUG_MESSAGE("Two array operands have different"
-            << endl << "upper bounds: in rank " << rank << ", the bounds are "
-            << ubound1 << " and " << ubound2 << endl);
-        BZ_PRE_FAIL;
-        return 0;
-    }
-
-};
-
-template<class P_expr1, class P_expr2, class P_op>
-class _bz_ArrayExprOp {
-public:
-    typedef P_expr1 T_expr1;
-    typedef P_expr2 T_expr2;
-    typedef _bz_typename T_expr1::T_numtype T_numtype1;
-    typedef _bz_typename T_expr2::T_numtype T_numtype2;
-    typedef _bz_typename P_op::T_numtype T_numtype;
-    typedef P_op T_op;
-    typedef T_expr1 T_ctorArg1;
-    typedef T_expr2 T_ctorArg2;
-
-    enum { numArrayOperands = BZ_ENUM_CAST(P_expr1::numArrayOperands)
-                            + BZ_ENUM_CAST(P_expr2::numArrayOperands),
-           numIndexPlaceholders = BZ_ENUM_CAST(P_expr1::numIndexPlaceholders)
-                            + BZ_ENUM_CAST(P_expr2::numIndexPlaceholders),
-           rank = (BZ_ENUM_CAST(P_expr1::rank) > BZ_ENUM_CAST(P_expr2::rank)) 
-                ? BZ_ENUM_CAST(P_expr1::rank) : BZ_ENUM_CAST(P_expr2::rank)
-    };
-
-    _bz_ArrayExprOp(const _bz_ArrayExprOp<P_expr1, P_expr2, P_op>& a)
-        : iter1_(a.iter1_), iter2_(a.iter2_)
-    { }
-
-    template<class T1, class T2>
-    _bz_ArrayExprOp(BZ_ETPARM(T1) a, BZ_ETPARM(T2) b)
-        : iter1_(a), iter2_(b)
-    { }
-
-//    _bz_ArrayExprOp(T_expr1 a, T_expr2 b)
-//       : iter1_(a), iter2_(b)
-//    { }
-
-    T_numtype operator*()
-    { return T_op::apply(*iter1_, *iter2_); }
-
-#ifdef BZ_ARRAY_EXPR_PASS_INDEX_BY_VALUE
-    template<int N_rank>
-    T_numtype operator()(TinyVector<int, N_rank> i)
-    { return T_op::apply(iter1_(i), iter2_(i)); }
-#else
-    template<int N_rank>
-    T_numtype operator()(const TinyVector<int, N_rank>& i)
-    { return T_op::apply(iter1_(i), iter2_(i)); }
-#endif
-
-    int ascending(int rank)
-    {
-        return bounds::compute_ascending(rank, iter1_.ascending(rank),
-            iter2_.ascending(rank));
-    }
-
-    int ordering(int rank)
-    {
-        return bounds::compute_ordering(rank, iter1_.ordering(rank),
-            iter2_.ordering(rank));
-    }
-
-    int lbound(int rank)
-    { 
-        return bounds::compute_lbound(rank, iter1_.lbound(rank),
-            iter2_.lbound(rank));
-    }
-
-    int ubound(int rank)
-    {
-        return bounds::compute_ubound(rank, iter1_.ubound(rank),
-            iter2_.ubound(rank));
-    }
-
-    void push(int position)
-    { 
-        iter1_.push(position); 
-        iter2_.push(position);
-    }
-
-    void pop(int position)
-    { 
-        iter1_.pop(position); 
-        iter2_.pop(position);
-    }
-
-    void advance()
-    { 
-        iter1_.advance(); 
-        iter2_.advance();
-    }
-
-    void advance(int n)
-    {
-        iter1_.advance(n);
-        iter2_.advance(n);
-    }
-
-    void loadStride(int rank)
-    { 
-        iter1_.loadStride(rank); 
-        iter2_.loadStride(rank);
-    }
-    
-    _bz_bool isUnitStride(int rank) const
-    { return iter1_.isUnitStride(rank) && iter2_.isUnitStride(rank); }
-
-    void advanceUnitStride()
-    { 
-        iter1_.advanceUnitStride(); 
-        iter2_.advanceUnitStride();
-    }
-
-    _bz_bool canCollapse(int outerLoopRank, int innerLoopRank) const
-    { 
-        // BZ_DEBUG_MESSAGE("_bz_ArrayExprOp<>::canCollapse");
-        return iter1_.canCollapse(outerLoopRank, innerLoopRank)
-            && iter2_.canCollapse(outerLoopRank, innerLoopRank);
-    } 
-
-    T_numtype operator[](int i)
-    { return T_op::apply(iter1_[i], iter2_[i]); }
-
-    T_numtype fastRead(int i)
-    { return T_op::apply(iter1_.fastRead(i), iter2_.fastRead(i)); }
-
-    int suggestStride(int rank) const
-    {
-        int stride1 = iter1_.suggestStride(rank);
-        int stride2 = iter2_.suggestStride(rank);
-        return (stride1 > stride2) ? stride1 : stride2;
-    }
-
-    _bz_bool isStride(int rank, int stride) const
-    {
-        return iter1_.isStride(rank,stride) && iter2_.isStride(rank,stride);
-    }
-
-    template<int N_rank>
-    void moveTo(const TinyVector<int,N_rank>& i)
-    {
-        iter1_.moveTo(i);
-        iter2_.moveTo(i);
-    }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    {
-        T_op::prettyPrint(str, format, iter1_, iter2_);
-    }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape& shape)
-    { return iter1_.shapeCheck(shape) && iter2_.shapeCheck(shape); }
-
-protected:
-    _bz_ArrayExprOp() { }
-
-    T_expr1 iter1_;
-    T_expr2 iter2_; 
-};
-
-template<class P_expr, class P_op>
-class _bz_ArrayExprUnaryOp {
-public:
-    typedef P_expr T_expr;
-    typedef _bz_typename P_expr::T_numtype T_numtype1;
-    typedef _bz_typename P_op::T_numtype T_numtype;
-    typedef P_op T_op;
-    typedef T_expr T_ctorArg1;
-    typedef int    T_ctorArg2;    // dummy
-
-    enum { numArrayOperands = BZ_ENUM_CAST(T_expr::numArrayOperands),
-        numIndexPlaceholders = BZ_ENUM_CAST(T_expr::numIndexPlaceholders),
-        rank = BZ_ENUM_CAST(T_expr::rank) };
-
-    _bz_ArrayExprUnaryOp(const _bz_ArrayExprUnaryOp<T_expr, P_op>& a)
-        : iter_(a.iter_)
-    { }
-
-    _bz_ArrayExprUnaryOp(BZ_ETPARM(T_expr) a)
-        : iter_(a)
-    { }
-
-    _bz_ArrayExprUnaryOp(_bz_typename T_expr::T_ctorArg1 a)
-        : iter_(a)
-    { }
-
-#if BZ_TEMPLATE_CTOR_DOESNT_CAUSE_HAVOC
-    template<class T1>
-    _bz_explicit _bz_ArrayExprUnaryOp(BZ_ETPARM(T1) a)
-        : iter_(a)
-    { }
-#endif
-
-    int ascending(int rank)
-    { return iter_.ascending(rank); }
-
-    int ordering(int rank)
-    { return iter_.ordering(rank); }
-
-    int lbound(int rank)
-    { return iter_.lbound(rank); }
-
-    int ubound(int rank)
-    { return iter_.ubound(rank); }
-
-    T_numtype operator*()
-    { return T_op::apply(*iter_); }
-
-#ifdef BZ_ARRAY_EXPR_PASS_INDEX_BY_VALUE
-    template<int N_rank>
-    T_numtype operator()(TinyVector<int, N_rank> i)
-    { return T_op::apply(iter_(i)); }
-#else
-    template<int N_rank>
-    T_numtype operator()(const TinyVector<int, N_rank>& i)
-    { return T_op::apply(iter_(i)); }
-#endif
-
-    void push(int position)
-    {
-        iter_.push(position);
-    }
-
-    void pop(int position)
-    {
-        iter_.pop(position);
-    }
-
-    void advance()
-    {
-        iter_.advance();
-    }
-
-    void advance(int n)
-    {
-        iter_.advance(n);
-    }
-
-    void loadStride(int rank)
-    {
-        iter_.loadStride(rank);
-    }
-
-    _bz_bool isUnitStride(int rank) const
-    { return iter_.isUnitStride(rank); }
-
-    void advanceUnitStride()
-    {
-        iter_.advanceUnitStride();
-    }
-
-    template<int N_rank>
-    void moveTo(const TinyVector<int,N_rank>& i)
-    {
-        iter_.moveTo(i);
-    }
-
-    _bz_bool canCollapse(int outerLoopRank, int innerLoopRank) const
-    { 
-        // BZ_DEBUG_MESSAGE("_bz_ArrayExprUnaryOp<>::canCollapse");
-        return iter_.canCollapse(outerLoopRank, innerLoopRank); 
-    }
-
-    T_numtype operator[](int i)
-    { return T_op::apply(iter_[i]); }
-
-    T_numtype fastRead(int i)
-    { return T_op::apply(iter_.fastRead(i)); }
-
-    int suggestStride(int rank) const
-    { return iter_.suggestStride(rank); }
-
-    _bz_bool isStride(int rank, int stride) const
-    { return iter_.isStride(rank,stride); }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    { T_op::prettyPrint(str, format, iter_); }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape& shape)
-    { return iter_.shapeCheck(shape); }
-
-protected:
-    _bz_ArrayExprUnaryOp() { }
-
-    T_expr iter_;
-};
-
-template<class P_numtype>
-class _bz_ArrayExprConstant {
-public:
-    typedef P_numtype T_numtype;
-    typedef T_numtype T_ctorArg1;
-    typedef int       T_ctorArg2;    // dummy
-
-    enum { numArrayOperands = 0, numIndexPlaceholders = 0, rank = 0 };
-
-    _bz_ArrayExprConstant(const _bz_ArrayExprConstant<T_numtype>& a)
-        : value_(a.value_)
-    { }
-
-    _bz_ArrayExprConstant(T_numtype value)
-        : value_(BZ_NO_PROPAGATE(value))
-    { 
-    }
-
-    // tiny() and huge() return the smallest and largest representable
-    // integer values.  See <blitz/numinquire.h>
-    // NEEDS_WORK: use tiny(int()) once numeric_limits<T> available on
-    // all platforms
-
-    int ascending(int)
-    { return INT_MIN; }
-
-    int ordering(int)
-    { return INT_MIN; }
-
-    int lbound(int)
-    { return INT_MIN; }
-
-    int ubound(int)
-    { return INT_MAX; }
-    // NEEDS_WORK: use huge(int()) once numeric_limits<T> available on
-    // all platforms
-
-    T_numtype operator*()
-    { return value_; }
-
-#ifdef BZ_ARRAY_EXPR_PASS_INDEX_BY_VALUE
-    template<int N_rank>
-    T_numtype operator()(TinyVector<int,N_rank>)
-    { return value_; }
-#else
-    template<int N_rank>
-    T_numtype operator()(const TinyVector<int,N_rank>&)
-    { return value_; }
-#endif
-
-    void push(int) { }
-    void pop(int) { }
-    void advance() { }
-    void advance(int) { }
-    void loadStride(int) { }
-
-    _bz_bool isUnitStride(int rank) const
-    { return _bz_true; }
-
-    void advanceUnitStride()
-    { }
-
-    _bz_bool canCollapse(int,int) const 
-    { return _bz_true; }
-
-    T_numtype operator[](int)
-    { return value_; }
-
-    T_numtype fastRead(int)
-    { return value_; }
-
-    int suggestStride(int) const
-    { return 1; }
-
-    _bz_bool isStride(int,int) const
-    { return _bz_true; }
-
-    template<int N_rank>
-    void moveTo(const TinyVector<int,N_rank>& i)
-    {
-    }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    {
-        if (format.tersePrintingSelected())
-            str += format.nextScalarOperandSymbol();
-        else
-            str += BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(T_numtype);
-    }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape&)
-    { return _bz_true; }
-
-protected:
-    _bz_ArrayExprConstant() { }
-
-    T_numtype value_;
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/array/asexpr.h>
-
-#endif // BZ_ARRAYEXPR_H
-
diff --git a/weave/blitz-20001213/blitz/array/fastiter.h b/weave/blitz-20001213/blitz/array/fastiter.h
deleted file mode 100644
index b5eb338..0000000
--- a/weave/blitz-20001213/blitz/array/fastiter.h
+++ /dev/null
@@ -1,297 +0,0 @@
-/***************************************************************************
- * blitz/array/iter.h     Declaration of FastArrayIterator<P_numtype,N_rank>
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:15  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_ARRAY_FASTITER_H
-#define BZ_ARRAY_FASTITER_H
-
-#ifdef BZ_HAVE_STD
- #include <strstream>
-#else
- #include <strstream.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/iter.h> must be included via <blitz/array.h>
-#endif
-
-template<class P_numtype, int N_rank>
-class FastArrayIterator {
-public:
-    typedef P_numtype                T_numtype;
-    typedef Array<T_numtype, N_rank> T_array;
-    typedef FastArrayIterator<P_numtype, N_rank> T_iterator;
-    typedef const T_array& T_ctorArg1;
-    typedef int            T_ctorArg2;    // dummy
-
-    enum { numArrayOperands = 1, numIndexPlaceholders = 0,
-        rank = N_rank };
-
-    // NB: this ctor does NOT preserve stack and stride
-    // parameters.  This is for speed purposes.
-    FastArrayIterator(const FastArrayIterator<P_numtype, N_rank>& x)
-        : data_(x.data_), array_(x.array_)
-    { }
-
-    void operator=(const FastArrayIterator<P_numtype, N_rank>& x)
-    {
-        array_ = x.array_;
-        data_ = x.data_;
-        stack_ = x.stack_;
-        stride_ = x.stride_;
-    }
-
-    FastArrayIterator(const T_array& array)
-        : array_(array)
-    {
-        data_   = array.data();
-    }
-
-    ~FastArrayIterator()
-    { }
-
-#ifdef BZ_ARRAY_EXPR_PASS_INDEX_BY_VALUE
-    T_numtype operator()(TinyVector<int, N_rank> i)
-    { return array_(i); }
-#else
-    T_numtype operator()(const TinyVector<int, N_rank>& i)
-    { return array_(i); }
-#endif
-
-    int ascending(int rank)
-    {
-        if (rank < N_rank)
-            return array_.isRankStoredAscending(rank);
-        else
-            return INT_MIN;   // tiny(int());
-    }
-
-    int ordering(int rank)
-    {
-        if (rank < N_rank)
-            return array_.ordering(rank);
-        else
-            return INT_MIN;   // tiny(int());
-    }
-
-    int lbound(int rank)
-    { 
-        if (rank < N_rank)
-            return array_.lbound(rank); 
-        else
-            return INT_MIN;   // tiny(int());
-    }
-
-    int ubound(int rank)
-    { 
-        if (rank < N_rank)
-            return array_.ubound(rank); 
-        else
-            return INT_MAX;   // huge(int());
-    }
-
-    T_numtype operator*()
-    { return *data_; }
-
-    T_numtype operator[](int i)
-    { return data_[i * stride_]; }
-
-    T_numtype fastRead(int i)
-    { return data_[i]; }
-
-    int suggestStride(int rank) const
-    { return array_.stride(rank); }
-
-    _bz_bool isStride(int rank, int stride) const
-    { return array_.stride(rank) == stride; }
-
-    void push(int position)
-    {
-        stack_[position] = data_;
-    }
-  
-    void pop(int position)
-    { 
-        data_ = stack_[position];
-    }
-
-    void advance()
-    {
-        data_ += stride_;
-    }
-
-    void advance(int n)
-    {
-        data_ += n * stride_;
-    }
-
-    void loadStride(int rank)
-    {
-        stride_ = array_.stride(rank);
-    }
-
-    const T_numtype * _bz_restrict data() const
-    { return data_; }
-
-    void _bz_setData(const T_numtype* ptr)
-    { data_ = ptr; }
-
-    int stride() const
-    { return stride_; }
-
-    _bz_bool isUnitStride(int rank) const
-    { return array_.stride(rank) == 1; }
-
-    void advanceUnitStride()
-    { ++data_; }
-
-    _bz_bool canCollapse(int outerLoopRank, int innerLoopRank) const
-    { return array_.canCollapse(outerLoopRank, innerLoopRank); }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    {
-        if (format.tersePrintingSelected())
-            str += format.nextArrayOperandSymbol();
-        else if (format.dumpArrayShapesMode())
-        {
-            ostrstream ostr;
-            ostr << array_.shape();
-            str += ostr.str();
-        }
-        else {
-            str += "Array<";
-            str += BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(T_numtype);
-            str += ",";
-
-            char tmpBuf[10];
-            sprintf(tmpBuf, "%d", N_rank);
-
-            str += tmpBuf;
-            str += ">";
-        }
-    }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape& shape)
-    { return areShapesConformable(shape, array_.length()); }
-
-
-    // Experimental
-    T_numtype& operator()(int i)
-    {
-        return (T_numtype&)data_[i*array_.stride(0)];
-    }
-
-    // Experimental
-    T_numtype& operator()(int i, int j)
-    {
-        return (T_numtype&)data_[i*array_.stride(0) + j*array_.stride(1)];
-    }
-
-    // Experimental
-    T_numtype& operator()(int i, int j, int k)
-    {
-        return (T_numtype&)data_[i*array_.stride(0) + j*array_.stride(1)
-          + k*array_.stride(2)];
-    }
-
-    // Experimental
-
-    void moveTo(int i, int j)
-    {
-        data_ = &const_cast<T_array&>(array_)(i,j);
-    }
-
-    void moveTo(int i, int j, int k)
-    {
-        data_ = &const_cast<T_array&>(array_)(i,j,k);
-    }
-
-    void moveTo(const TinyVector<int,N_rank>& i)
-    {
-        data_ = &const_cast<T_array&>(array_)(i);
-    }
-
-    // Experimental
-    void operator=(T_numtype x)
-    {   *const_cast<T_numtype* _bz_restrict>(data_) = x; }
-
-    // Experimental
-    template<class T_value>
-    void operator=(T_value x)
-    {   *const_cast<T_numtype* _bz_restrict>(data_) = x; }
-
-    // Experimental
-    template<class T_value>
-    void operator+=(T_value x)
-    { *const_cast<T_numtype* _bz_restrict>(data_) += x; }
-
-    // NEEDS_WORK: other operators
-
-    // Experimental
-    operator T_numtype() const
-    { return *data_; }
-
-    // Experimental
-    T_numtype shift(int offset, int dim)
-    {
-        return data_[offset*array_.stride(dim)];
-    }
-
-    // Experimental
-    T_numtype shift(int offset1, int dim1, int offset2, int dim2)
-    {
-        return data_[offset1*array_.stride(dim1) 
-            + offset2*array_.stride(dim2)];
-    }
-
-private:
-    const T_numtype * _bz_restrict          data_;
-    const T_array&                          array_;
-    const T_numtype *                       stack_[N_rank];
-    int                                     stride_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAY_FASTITER_H
diff --git a/weave/blitz-20001213/blitz/array/geometry.h b/weave/blitz-20001213/blitz/array/geometry.h
deleted file mode 100644
index 7ec405f..0000000
--- a/weave/blitz-20001213/blitz/array/geometry.h
+++ /dev/null
@@ -1,81 +0,0 @@
-#ifndef BZ_GEOMETRY_H
-#define BZ_GEOMETRY_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/geometry.h> must be included after <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-typedef double T_defaultSpatialCoordinate;
-
-template<int N_dim, class T = T_defaultSpatialCoordinate>
-class UniformOrthoGeometry {
-public:
-};
-
-template<int N_dim, class T = T_defaultSpatialCoordinate>
-class UniformCubicGeometry {
-    T h_;
-    T recip_h_;
-    T recip2_h_;
-    T recip3_h_;
-    TinyVector<T,N_dim> zero_;
-
-public:
-    typedef T T_coord;
-
-    UniformCubicGeometry()
-    {
-        h_ = 0.0;
-        recip_h_ = 0.0;
-        recip2_h_ = 0.0;
-        recip3_h_ = 0.0;
-        zero_ = 0.0;
-    }
-
-    UniformCubicGeometry(T spatialStep)
-    {
-        h_ = spatialStep;
-        zero_ = T(0);
-        setup();
-    }
-
-    UniformCubicGeometry(T spatialStep, TinyVector<T,N_dim> zeroCoordinates)
-    {   
-        h_ = spatialStep;
-        zero_ = zeroCoordinates;
-        setup();
-    }    
-
-    TinyVector<T,N_dim> toSpatial(TinyVector<int,N_dim> logicalCoord) const
-    {
-        return zero_ + h_ * logicalCoord;
-    }
-
-    T spatialStep() const
-    { return h_; }
-
-    T recipSpatialStep() const
-    { return recip_h_; }
-
-    T recipSpatialStepPow2() const
-    { return recip2_h_; }
-
-private:
-    void setup()
-    {
-        recip_h_ = 1.0 / h_;
-        recip2_h_ = 1.0 / pow2(h_);
-        recip3_h_ = 1.0 / pow3(h_);
-    }
-};
-
-template<int N_dim, class T = T_defaultSpatialCoordinate>
-class TensorProductGeometry {
-public:
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_GEOMETRY_H
diff --git a/weave/blitz-20001213/blitz/array/indirect.h b/weave/blitz-20001213/blitz/array/indirect.h
deleted file mode 100644
index eb1ce67..0000000
--- a/weave/blitz-20001213/blitz/array/indirect.h
+++ /dev/null
@@ -1,270 +0,0 @@
-#ifndef BZ_ARRAY_INDIRECT_H
-#define BZ_ARRAY_INDIRECT_H
-
-#include <blitz/array/asexpr.h>
-#include <blitz/array/cartesian.h>
-
-BZ_NAMESPACE(blitz)
-
-template<class T_array, class T_index>
-class IndirectArray {
-
-public:
-    IndirectArray(T_array& array, T_index& index)
-        : array_(array), index_(index)
-    { }
-
-    template<class T_expr>
-    void operator=(T_expr expr);
-
-protected:
-    T_array& array_;
-    T_index& index_;
-};
-
-// Forward declarations
-template<class T_array, class T_arrayiter, class T_subdomain, class T_expr>
-inline void applyOverSubdomain(const T_array& array, T_arrayiter& arrayIter,
-    T_subdomain subdomain, T_expr expr);
-template<class T_array, class T_arrayiter, int N_rank, class T_expr>
-inline void applyOverSubdomain(const T_array& array, T_arrayiter& arrayIter,
-    RectDomain<N_rank> subdomain,
-    T_expr expr);
-
-template<class T_array, class T_index> template<class T_rhs>
-void IndirectArray<T_array, T_index>::operator=(T_rhs rhs)
-{
-    typedef _bz_typename asExpr<T_rhs>::T_expr T_expr;
-    T_expr expr(rhs);
-
-    _bz_typename T_array::T_iterator arrayIter(array_);
-
-    _bz_typename T_index::iterator iter = index_.begin(),
-                       end = index_.end();
-
-    for (; iter != end; ++iter)
-    {
-        _bz_typename T_index::value_type subdomain = *iter;
-        applyOverSubdomain(array_, arrayIter, subdomain, expr);
-    }
-}
-
-template<class T_array, class T_arrayiter, class T_subdomain, class T_expr>
-inline void applyOverSubdomain(const T_array& array, T_arrayiter& arrayIter, 
-    T_subdomain subdomain, T_expr expr)
-{
-    BZPRECHECK(array.isInRange(subdomain),
-        "In indirection using an STL container of TinyVector<int,"
-        << array.rank() << ">, one of the" << endl << "positions is out of"
-        " range: " << endl << subdomain << endl
-        << "Array lower bounds: " << array.lbound() << endl
-        << "Array upper bounds: " << array.ubound() << endl)
-
-    arrayIter.moveTo(subdomain);
-    expr.moveTo(subdomain);
-
-    *const_cast<_bz_typename T_arrayiter::T_numtype*>(arrayIter.data()) = *expr;
-}
-
-// Specialization for RectDomain<N>
-template<class T_array, class T_arrayiter, int N_rank, class T_expr>
-inline void applyOverSubdomain(const T_array& array, T_arrayiter& arrayIter, 
-    RectDomain<N_rank> subdomain,
-    T_expr expr)
-{
-    typedef _bz_typename T_array::T_numtype T_numtype;
-
-    // Assume that the RectDomain<N_rank> is a 1-D strip.
-    // Find the dimension in which the strip is oriented.  This
-    // variable is static so that we cache the value; likely to be
-    // the same for all strips within a container.
-
-    static int stripDim = 0;
-
-    if (subdomain.lbound(stripDim) == subdomain.ubound(stripDim))
-    {
-        // Cached value was wrong, find the correct value of stripDim
-        for (stripDim=0; stripDim < N_rank; ++stripDim)
-          if (subdomain.lbound(stripDim) != subdomain.ubound(stripDim))
-            break;
-
-        // Handle case where the strip is just a single point
-        if (stripDim == N_rank)
-            stripDim = 0;
-    }
-
-#ifdef BZ_DEBUG
-    // Check that this is in fact a 1D strip
-    for (int i=0; i < N_rank; ++i)
-      if ((i != stripDim) && (subdomain.lbound(i) != subdomain.ubound(i)))
-        BZPRECHECK(0, "In indirection using an STL container of RectDomain<"
-          << N_rank << ">, one of" << endl << "the RectDomain objects was not"
-          " a one-dimensional strip:" << endl << "RectDomain<" << N_rank
-          << ">::lbound() = " << subdomain.lbound() << endl
-          << "RectDomain<" << N_rank << ">::ubound() = " << subdomain.ubound())
-#endif
-
-    // Check that the start and end position are in range
-    BZPRECHECK(array.isInRange(subdomain.lbound()),
-        "In indirection using an STL container of RectDomain<"
-        << N_rank << ">, one of" << endl << "the RectDomain objects has a"
-        " lbound which is out of range:" << endl
-        << subdomain.lbound() << endl
-        << "Array lower bounds: " << array.lbound() << endl
-        << "Array upper bounds: " << array.ubound() << endl)
-
-    BZPRECHECK(array.isInRange(subdomain.ubound()),
-        "In indirection using an STL container of RectDomain<"
-        << N_rank << ">, one of" << endl << "the RectDomain objects has a"
-        " ubound which is out of range:" << endl
-        << subdomain.lbound() << endl
-        << "Array lower bounds: " << array.lbound() << endl
-        << "Array upper bounds: " << array.ubound() << endl)
-
-    // Position at the beginning of the strip
-    arrayIter.moveTo(subdomain.lbound());
-    expr.moveTo(subdomain.lbound());
-
-    // Loop through the strip
-
-#ifdef BZ_USE_FAST_READ_ARRAY_EXPR
-
-    _bz_bool useUnitStride = arrayIter.isUnitStride(stripDim)
-          && expr.isUnitStride(stripDim);
-
-    int lbound = subdomain.lbound(stripDim); 
-    int ubound = subdomain.ubound(stripDim);
-
-    if (useUnitStride)
-    {
-        T_numtype* _bz_restrict data = const_cast<T_numtype*>(arrayIter.data());
-
-        int length = ubound - lbound + 1;
-        for (int i=0; i < length; ++i)
-            data[i] = expr.fastRead(i);
-    }
-    else {
-#endif
-
-    arrayIter.loadStride(stripDim);
-    expr.loadStride(stripDim);
-
-    for (int i=lbound; i <= ubound; ++i)
-    {
-        *const_cast<_bz_typename T_arrayiter::T_numtype*>(arrayIter.data()) 
-            = *expr;
-        expr.advance();
-        arrayIter.advance();
-    }
-
-#ifdef BZ_USE_FAST_READ_ARRAY_EXPR
-    }
-#endif
-}
-
-// Global functions for cartesian product of index sets
-template<class T_container>
-CartesianProduct<TinyVector<int,2>,T_container,2>
-indexSet(const T_container& container0, const T_container& container1)
-{
-    return CartesianProduct<TinyVector<int,2>,T_container,2>(
-        const_cast<T_container&>(container0), 
-        const_cast<T_container&>(container1));
-}
-
-template<class T_container>
-CartesianProduct<TinyVector<int,3>,T_container,3>
-indexSet(const T_container& container0, const T_container& container1,
-    const T_container& container2)
-{
-    return CartesianProduct<TinyVector<int,3>,T_container,3>(
-        const_cast<T_container&>(container0), 
-        const_cast<T_container&>(container1), 
-        const_cast<T_container&>(container2));
-}
-
-// Mixture of singletons and containers, e.g. A[indexSet(I,3,K)]
-
-// cp_findContainerType<T1,T2,T3,...,Tn>::T_container
-// The set of parameters T1, T2, T3, ... Tn is a mixture of
-// int and T_container.  This traits class finds the container
-// type, and sets T_container.
-//
-// e.g. cp_findContainerType<int,int,list<int>,int>::T_container is list<int>
-//      cp_findContainerType<int,deque<int>,deque<int>>::T_container 
-//        is deque<int>
-
-template<class T1, class T2, class T3=int, class T4=int>
-struct cp_findContainerType {
-    typedef T1 T_container;
-};
-
-template<class T2, class T3, class T4>
-struct cp_findContainerType<int,T2,T3,T4> {
-    typedef _bz_typename cp_findContainerType<T2,T3,T4>::T_container T_container;
-};
-
-
-// The cp_traits class handles promotion of singleton integers to
-// containers.  It takes two template parameters:
-//    T = argument type
-//    T2 = container type
-// If T is an integer, then a container of type T2 is created and the
-// integer is inserted.  This container is returned.
-// Otherwise, T is assumed to be the same type as T2, and the original
-// container is returned.
-
-template<class T, class T2>
-struct cp_traits {
-    typedef T T_container;
-
-    static const T_container& make(const T& x)
-    { return x; }
-};
-
-template<class T2>
-struct cp_traits<int,T2> {
-    typedef T2 T_container;
-
-    static T2 make(int x)
-    { 
-        T2 singleton;
-        singleton.push_back(x);
-        return singleton;
-    }
-};
-
-// These versions of indexSet() allow mixtures of integer
-// and container arguments.  At least one integer must be
-// specified.
-
-template<class T1, class T2>
-CartesianProduct<TinyVector<int,2>, _bz_typename 
-    cp_findContainerType<T1,T2>::T_container,2> 
-indexSet(const T1& c1, const T2& c2)
-{
-    typedef _bz_typename cp_findContainerType<T1,T2>::T_container
-        T_container;
-
-    return CartesianProduct<TinyVector<int,2>, T_container, 2>(
-          cp_traits<T1,T_container>::make(c1),
-          cp_traits<T2,T_container>::make(c2));
-}
-
-template<class T1, class T2, class T3>
-CartesianProduct<TinyVector<int,3>, _bz_typename
-    cp_findContainerType<T1,T2,T3>::T_container, 3>
-indexSet(const T1& c1, const T2& c2, const T3& c3)
-{
-    typedef _bz_typename cp_findContainerType<T1,T2,T3>::T_container
-        T_container;
-
-    return CartesianProduct<TinyVector<int,3>, T_container, 3>(
-          cp_traits<T1,T_container>::make(c1),
-          cp_traits<T2,T_container>::make(c2),
-          cp_traits<T3,T_container>::make(c3));
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAY_INDIRECT_H
diff --git a/weave/blitz-20001213/blitz/array/interlace.cc b/weave/blitz-20001213/blitz/array/interlace.cc
deleted file mode 100644
index c0623c3..0000000
--- a/weave/blitz-20001213/blitz/array/interlace.cc
+++ /dev/null
@@ -1,558 +0,0 @@
-/***************************************************************************
- * blitz/array/interlace.cc
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- *
- */
-
-#ifndef BZ_ARRAYINTERLACE_CC
-#define BZ_ARRAYINTERLACE_CC
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/interlace.cc> must be included via <blitz/array.h>
-#endif
-
-#ifndef BZ_ARRAYSHAPE_H
- #include <blitz/array/shape.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * This header provides two collections of routines:
- *
- * interlaceArrays(shape, A1, A2, ...);
- * allocateArrays(shape, A1, A2, ...);
- *
- * interlaceArrays allocates a set of arrays so that their data is
- * interlaced.  For example,
- *
- * Array<int,2> A, B;
- * interlaceArrays(shape(10,10), A, B);
- *
- * sets up the array storage so that A(0,0) is followed by B(0,0) in
- * memory; then A(0,1) and B(0,1), and so on.
- *
- * The allocateArrays() routines may or may not interlace the data,
- * depending on whether interlacing is advantageous for the architecture.
- * This is controlled by the setting of BZ_INTERLACE_ARRAYS in
- * <blitz/tuning.h>.
- */
-
-// Warning: Can't instantiate TinyVector<Range,N> because causes
-// conflict between TinyVector<T,N>::operator=(T) and
-// TinyVector<T,N>::operator=(Range)
-
-// NEEDS_WORK -- also shape for up to N=11
-// NEEDS_WORK -- shape(Range r1, Range r2, ...) (return TinyVector<Range,n>)
-//               maybe use Domain objects
-// NEEDS_WORK -- doesn't make a lot of sense for user to provide a
-//               GeneralArrayStorage<N_rank+1>
-
-template<class T_numtype>
-void makeInterlacedArray(Array<T_numtype,2>& mainArray,
-    Array<T_numtype,1>& subarray, int slice)
-{
-    Array<T_numtype,1> tmp = mainArray(Range::all(), slice);
-    subarray.reference(tmp);
-}
-
-template<class T_numtype>
-void makeInterlacedArray(Array<T_numtype,3>& mainArray,
-    Array<T_numtype,2>& subarray, int slice)
-{
-    Array<T_numtype,2> tmp = mainArray(Range::all(), Range::all(), 
-        slice);
-    subarray.reference(tmp);
-}
-
-template<class T_numtype>
-void makeInterlacedArray(Array<T_numtype,4>& mainArray,
-    Array<T_numtype,3>& subarray, int slice)
-{
-    Array<T_numtype,3> tmp = mainArray(Range::all(), Range::all(), 
-        Range::all(), slice);
-    subarray.reference(tmp);
-}
-
-// These routines always allocate interlaced arrays
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 2, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-}
-
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 3, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-    makeInterlacedArray(array, a3, 2);
-}
-
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 4, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-    makeInterlacedArray(array, a3, 2);
-    makeInterlacedArray(array, a4, 3);
-}
-
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 5, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-    makeInterlacedArray(array, a3, 2);
-    makeInterlacedArray(array, a4, 3);
-    makeInterlacedArray(array, a5, 4);
-}
-
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 6, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-    makeInterlacedArray(array, a3, 2);
-    makeInterlacedArray(array, a4, 3);
-    makeInterlacedArray(array, a5, 4);
-    makeInterlacedArray(array, a6, 5);
-}
-
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 7, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-    makeInterlacedArray(array, a3, 2);
-    makeInterlacedArray(array, a4, 3);
-    makeInterlacedArray(array, a5, 4);
-    makeInterlacedArray(array, a6, 5);
-    makeInterlacedArray(array, a7, 6);
-}
-
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 8, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-    makeInterlacedArray(array, a3, 2);
-    makeInterlacedArray(array, a4, 3);
-    makeInterlacedArray(array, a5, 4);
-    makeInterlacedArray(array, a6, 5);
-    makeInterlacedArray(array, a7, 6);
-    makeInterlacedArray(array, a8, 7);
-}
-
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8,
-    Array<T_numtype,N_rank>& a9)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 9, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-    makeInterlacedArray(array, a3, 2);
-    makeInterlacedArray(array, a4, 3);
-    makeInterlacedArray(array, a5, 4);
-    makeInterlacedArray(array, a6, 5);
-    makeInterlacedArray(array, a7, 6);
-    makeInterlacedArray(array, a8, 7);
-    makeInterlacedArray(array, a9, 8);
-}
-
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8,
-    Array<T_numtype,N_rank>& a9, Array<T_numtype,N_rank>& a10)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 10, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-    makeInterlacedArray(array, a3, 2);
-    makeInterlacedArray(array, a4, 3);
-    makeInterlacedArray(array, a5, 4);
-    makeInterlacedArray(array, a6, 5);
-    makeInterlacedArray(array, a7, 6);
-    makeInterlacedArray(array, a8, 7);
-    makeInterlacedArray(array, a9, 8);
-    makeInterlacedArray(array, a10, 9);
-}
-
-template<class T_numtype, int N_rank>
-void interlaceArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8,
-    Array<T_numtype,N_rank>& a9, Array<T_numtype,N_rank>& a10,
-    Array<T_numtype,N_rank>& a11)
-{
-    GeneralArrayStorage<N_rank+1> storage;
-    Array<T_numtype, N_rank+1> array(shape, 11, storage);
-    makeInterlacedArray(array, a1, 0);
-    makeInterlacedArray(array, a2, 1);
-    makeInterlacedArray(array, a3, 2);
-    makeInterlacedArray(array, a4, 3);
-    makeInterlacedArray(array, a5, 4);
-    makeInterlacedArray(array, a6, 5);
-    makeInterlacedArray(array, a7, 6);
-    makeInterlacedArray(array, a8, 7);
-    makeInterlacedArray(array, a9, 8);
-    makeInterlacedArray(array, a10, 9);
-    makeInterlacedArray(array, a11, 10);
-}
-
-// NEEDS_WORK -- make `storage' a parameter in these routines
-//  Will be tricky: have to convert GeneralArrayStorage<N_rank> to
-//  GeneralArrayStorage<N_rank+1>
-
-// These routines may or may not interlace arrays, depending on
-// whether it is advantageous for this platform.
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-#endif
-}
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2, a3);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-    a3.resize(shape);
-#endif
-}
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2, a3, a4);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-    a3.resize(shape);
-    a4.resize(shape);
-#endif
-}
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2, a3, a4, a5);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-    a3.resize(shape);
-    a4.resize(shape);
-    a5.resize(shape);
-#endif
-}
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2, a3, a4, a5, a6);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-    a3.resize(shape);
-    a4.resize(shape);
-    a5.resize(shape);
-    a6.resize(shape);
-#endif
-}
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-    a3.resize(shape);
-    a4.resize(shape);
-    a5.resize(shape);
-    a6.resize(shape);
-    a7.resize(shape);
-#endif
-}
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-    a3.resize(shape);
-    a4.resize(shape);
-    a5.resize(shape);
-    a6.resize(shape);
-    a7.resize(shape);
-    a8.resize(shape);
-#endif
-}
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8,
-    Array<T_numtype,N_rank>& a9)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8, a9);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-    a3.resize(shape);
-    a4.resize(shape);
-    a5.resize(shape);
-    a6.resize(shape);
-    a7.resize(shape);
-    a8.resize(shape);
-    a9.resize(shape);
-#endif
-}
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8,
-    Array<T_numtype,N_rank>& a9, Array<T_numtype,N_rank>& a10)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-    a3.resize(shape);
-    a4.resize(shape);
-    a5.resize(shape);
-    a6.resize(shape);
-    a7.resize(shape);
-    a8.resize(shape);
-    a9.resize(shape);
-    a10.resize(shape);
-#endif
-}
-
-template<class T_numtype, int N_rank>
-void allocateArrays(const TinyVector<int,N_rank>& shape,
-    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,
-    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,
-    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,
-    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8,
-    Array<T_numtype,N_rank>& a9, Array<T_numtype,N_rank>& a10,
-    Array<T_numtype,N_rank>& a11)
-{
-#ifdef BZ_INTERLACE_ARRAYS
-    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
-#else
-    a1.resize(shape);
-    a2.resize(shape);
-    a3.resize(shape);
-    a4.resize(shape);
-    a5.resize(shape);
-    a6.resize(shape);
-    a7.resize(shape);
-    a8.resize(shape);
-    a9.resize(shape);
-    a10.resize(shape);
-    a11.resize(shape);
-#endif
-}
-
-// NEEDS_WORK -- allocateArrays for TinyVector<Range,N_rank>
-
-// This constructor is used to create interlaced arrays.
-template<class T_numtype, int N_rank>
-Array<T_numtype,N_rank>::Array(const TinyVector<int,N_rank-1>& shape,
-    int lastExtent, const GeneralArrayStorage<N_rank>& storage)
-    : storage_(storage)
-{
-    // Create an array with the given shape, plus an extra dimension
-    // for the number of arrays being allocated.  This extra dimension
-    // must have minor storage order.
-
-    if (ordering(0) == 0)
-    {
-        // Column major storage order (or something like it)
-        length_[0] = lastExtent;
-        storage_.setBase(0,0);
-        for (int i=1; i < N_rank; ++i)
-            length_[i] = shape[i-1];
-    }
-    else if (ordering(0) == N_rank-1)
-    {
-        // Row major storage order (or something like it)
-        for (int i=0; i < N_rank-1; ++i)
-            length_[i] = shape[i];
-        length_[N_rank-1] = lastExtent;
-        storage_.setBase(N_rank-1, 0);
-    }
-    else {
-        BZPRECHECK(0, "Used allocateArrays() with a peculiar storage format");
-    }
-
-    setupStorage(N_rank-1);
-}
-
-// NEEDS_WORK -- see note about TinyVector<Range,N> in <blitz/arrayshape.h>
-#if 0
-template<class T_numtype, int N_rank>
-Array<T_numtype,N_rank>::Array(const TinyVector<Range,N_rank-1>& shape,
-    int lastExtent, const GeneralArrayStorage<N_rank>& storage)
-    : storage_(storage)
-{
-#ifdef BZ_DEBUG
-    for (int i=0; i < N_rank; ++i)
-      BZPRECHECK(shape[i].isAscendingContiguous(),
-        "In call to allocateArrays(), a Range object is not ascending" << endl
-        << "contiguous: " << shape[i] << endl);
-#endif
-
-    if (ordering(0) == 0)
-    {
-        // Column major storage order (or something like it)
-        length_[0] = lastExtent;
-        storage_.setBase(0,0);
-        for (int i=1; i < N_rank; ++i)
-        {
-            length_[i] = shape[i-1].length();
-            storage_.setBase(i, shape[i-1].first());
-        }
-    }
-    else if (ordering(0) == N_rank-1)
-    {
-        // Row major storage order (or something like it)
-        for (int i=0; i < N_rank-1; ++i)
-        {
-            length_[i] = shape[i];
-            storage_.setBase(i, shape[i].first());
-        }
-        length_[N_rank-1] = lastExtent;
-        storage_.setBase(N_rank-1, 0);
-    }
-    else {
-        BZPRECHECK(0, "Used allocateArrays() with a peculiar storage format");
-    }
-
-    setupStorage(N_rank-1);
-}
-#endif
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYINTER_CC
-
diff --git a/weave/blitz-20001213/blitz/array/io.cc b/weave/blitz-20001213/blitz/array/io.cc
deleted file mode 100644
index 087114f..0000000
--- a/weave/blitz-20001213/blitz/array/io.cc
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef BZ_ARRAY_H
- #error <blitz/array/io.cc> must be included via <blitz/array.h>
-#endif
-
-#ifndef BZ_ARRAYIO_CC
-#define BZ_ARRAYIO_CC
-
-BZ_NAMESPACE(blitz)
-
-template<class T_numtype>
-ostream& operator<<(ostream& os, const Array<T_numtype,1>& x)
-{
-    os << x.extent(firstRank) << endl;
-    os << " [ ";
-    for (int i=x.lbound(firstRank); i <= x.ubound(firstRank); ++i)
-    {
-        os << setw(9) << x(i) << " ";
-        if (!((i+1-x.lbound(firstRank))%7))
-            os << endl << "  ";
-    }
-    os << " ]";
-    return os;
-}
-
-template<class T_numtype>
-ostream& operator<<(ostream& os, const Array<T_numtype,2>& x)
-{
-    os << x.rows() << " x " << x.columns() << endl;
-    os << "[ ";
-    for (int i=x.lbound(firstRank); i <= x.ubound(firstRank); ++i)
-    {
-        for (int j=x.lbound(secondRank); j <= x.ubound(secondRank); ++j)
-        {
-            os << setw(9) << x(i,j) << " ";
-            if (!((j+1-x.lbound(secondRank)) % 7))
-                os << endl << "  ";
-        }
-
-        if (i != x.ubound(firstRank))
-           os << endl << "  ";
-    }
-
-    os << "]" << endl;
-
-    return os;
-}
-
-template<class T_numtype, int N_rank>
-ostream& operator<<(ostream& os, const Array<T_numtype,N_rank>& x)
-{
-    for (int i=0; i < N_rank; ++i)
-    {
-        os << x.extent(i);
-        if (i != N_rank - 1)
-            os << " x ";
-    }
-
-    os << endl << "[ ";
-   
-    typedef _bz_typename Array<T_numtype, N_rank>::const_iterator 
-         ArrayConstIterator;
-    ArrayConstIterator iter = x.begin(), end = x.end();
-    int p = 0;
-
-    while (iter != end) {
-        os << setw(9) << (*iter) << " ";
-        ++iter;
-
-        // See if we need a linefeed
-        ++p;
-        if (!(p % 7))
-            os << endl << "  ";
-    }
-
-    os << "]" << endl;
-    return os;
-}
-
-/*
- *  Input
- */
-
-template<class T_numtype, int N_rank>
-istream& operator>>(istream& is, Array<T_numtype,N_rank>& x)
-{
-    TinyVector<int,N_rank> extent;
-    char sep;
- 
-    // Read the extent vector: this is separated by 'x's, e.g.
-    // 3 x 4 x 5
-
-    for (int i=0; i < N_rank; ++i)
-    {
-        is >> extent(i);
-
-        BZPRECHECK(!is.bad(), "Premature end of input while scanning array");
-
-        if (i != N_rank - 1)
-        {
-            is >> sep;
-            BZPRECHECK(sep == 'x', "Format error while scanning input array"
-                << endl << " (expected 'x' between array extents)");
-        }
-    }
-
-    is >> sep;
-    BZPRECHECK(sep == '[', "Format error while scanning input array"
-        << endl << " (expected '[' before beginning of array data)");
-
-    x.resize(extent);
-
-    typedef _bz_typename Array<T_numtype,N_rank>::iterator
-         ArrayIterator;
-    ArrayIterator iter = x.begin(), end = x.end();
-
-    while (iter != end) {
-        BZPRECHECK(!is.bad(), "Premature end of input while scanning array");
-
-        is >> (*iter);
-        ++iter;
-    }
-
-    is >> sep;
-    BZPRECHECK(sep == ']', "Format error while scanning input array"
-       << endl << " (expected ']' after end of array data)");
-
-    return is;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYIO_CC
diff --git a/weave/blitz-20001213/blitz/array/iter.h b/weave/blitz-20001213/blitz/array/iter.h
deleted file mode 100644
index dc6c10c..0000000
--- a/weave/blitz-20001213/blitz/array/iter.h
+++ /dev/null
@@ -1,202 +0,0 @@
-#ifndef BZ_ARRAY_H
- #error <blitz/array/iter.h> must be included via <blitz/array.h>
-#endif
-
-#ifndef BZ_ARRAY_ITER_H
-#define BZ_ARRAY_ITER_H
-
-BZ_NAMESPACE(blitz)
-
-struct _bz_endTag { };
-
-
-template<class T, int N>
-class ConstArrayIterator {
-
-public:
-    ConstArrayIterator(const Array<T,N>& array)
-    {
-        // Making internal copies of these avoids keeping
-        // a pointer to the array and doing indirection.
-        strides_ = array.stride();
-        lbound_ = array.lbound();
-        extent_ = array.extent();
-        order_ = array.ordering();
-        first_ = const_cast<T*>(array.dataFirst());
-        data_ = first_;
-
-        maxRank_ = order_(0);
-        stride_ = strides_(maxRank_);
-
-        for (int i=0; i < N; ++i)
-        {
-            stack_[i] = data_;
-            last_[i] = data_ + array.extent(order_(i))  
-                * strides_(order_(i));
-        }
-
-        pos_ = lbound_;
-    }
-
-    ConstArrayIterator(const Array<T,N>& array, _bz_endTag)
-    {
-        // The _bz_endTag type is provided by the end() method
-        // in Array<T,N>, and indicates that an end iterator
-        // is to be constructed.
-
-        // Use 0 pointer to mark end of array.
-        // This also handles the case of empty arrays, which
-        // have their data pointer set to 0.
-        data_ = 0;
-    }
-
-    T operator*() const
-    {
-        BZPRECHECK(data_ != 0, "Attempted to dereference invalid iterator "
-             << "(empty array or past end of array)");
-        return *data_;
-    }
-
-    const T* _bz_restrict operator->() const
-    {
-        BZPRECHECK(data_ != 0, "Attempted to dereference invalid iterator "
-             << "(empty array or past end of array)");
-        return data_;
-    }
-
-    ConstArrayIterator<T,N>& operator++();
-
-    // This operator returns void, which breaks the STL forward
-    // iterator requirements.  Unfortunately many people have
-    // gotten into the habit of writing iter++ when they really
-    // mean ++iter.  iter++ implemented the proper way requires
-    // returning a copy of the original state of the iterator,
-    // before increment.  This would be very inefficient, since
-    // the iterator contains a lot of data.  Hence the void
-    // return: it will be efficient even if you write iter++.
-    // Maybe this is a bad idea, let me know if this causes
-    // you problems.
-    void operator++(int)
-    { ++(*this); }
-
-    const TinyVector<int,N>& position() const
-    { 
-        BZPRECHECK(data_ != 0, "Array<T,N>::iterator::position() called on"
-             << " invalid iterator");
-        return pos_; 
-    }
-   
-    bool operator==(const ConstArrayIterator<T,N>& x) const
-    {
-        return data_ == x.data_;
-    }
-
-    bool operator!=(const ConstArrayIterator<T,N>& x) const
-    {
-        return data_ != x.data_;
-    }
- 
-private:
-    ConstArrayIterator() { }
-
-private:
-    TinyVector<int,N> strides_, lbound_, extent_, order_;
-    T * stack_[N];
-    T * last_[N];
-    int stride_;
-    int maxRank_;
-
-protected:
-    TinyVector<int,N> pos_;
-    T * _bz_restrict data_;
-    T * _bz_restrict first_;
-};
-
-
-
-template<class T, int N>
-class ArrayIterator : public ConstArrayIterator<T,N> {
-  public:
-    ArrayIterator(Array<T,N>& x)
-      : ConstArrayIterator<T,N>(x)
-    { }
-
-    ArrayIterator(Array<T,N>& x, _bz_endTag y)
-      : ConstArrayIterator<T,N>(x,y)
-    { }
-
-    ArrayIterator<T,N>& operator++()
-    {
-        ConstArrayIterator<T,N>::operator++();
-        return *this;
-    }
-
-    T& operator*()
-    {
-        return *data_;
-    }
-
-    T* _bz_restrict operator->() 
-    {
-        return data_;
-    }
-};
-
-
-
-template<class T, int N>
-ConstArrayIterator<T,N>& ConstArrayIterator<T,N>::operator++()
-{
-    BZPRECHECK(data_ != 0, "Attempted to iterate past the end of an array.");
-
-    data_ += stride_;
-
-    if (data_ != last_[0])
-    {
-        // We hit this case almost all the time.
-        ++pos_[maxRank_];
-        return *this;
-    }
-
-    // We've hit the end of a row/column/whatever.  Need to
-    // increment one of the loops over another dimension.
-
-    int j = 1;
-    for (; j < N; ++j)
-    {
-        int r = order_(j);
-        data_ = stack_[j];
-        data_ += strides_[r];
-        ++pos_(r);
-
-        if (data_ != last_[j])
-            break;
-    }
-
-    // All done?
-    if (j == N)
-    {
-        // Setting data_ to 0 indicates the end of the array has
-        // been reached, and will match the end iterator.
-        data_ = 0;
-        return *this;
-    }
-
-    stack_[j] = data_;
-
-    // Now reset all the last pointers
-    for (--j; j >= 0; --j)
-    {
-        int r2 = order_(j);
-        stack_[j] = data_;
-        last_[j] = data_ + extent_(r2) * strides_(r2);
-        pos_(r2) = lbound_(r2);
-    }
-
-    return *this;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAY_ITER_H
-
diff --git a/weave/blitz-20001213/blitz/array/map.h b/weave/blitz-20001213/blitz/array/map.h
deleted file mode 100644
index 8348447..0000000
--- a/weave/blitz-20001213/blitz/array/map.h
+++ /dev/null
@@ -1,495 +0,0 @@
-/***************************************************************************
- * blitz/array/map.h      Declaration of the ArrayIndexMapping class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-/*
- * ArrayIndexMapping is used to implement tensor array notation.  For
- * example:
- *
- * Array<float, 2> A, B;
- * firstIndex i;
- * secondIndex j;
- * thirdIndex k;
- * Array<float, 3> C = A(i,j) * B(j,k);
- *
- * For expression templates purposes, something like B(j,k) is represented
- * by an instance of class ArrayIndexMapping.  This class maps an array onto
- * the destination array coordinate system, e.g. B(j,k) -> C(i,j,k)
- */
-
-#ifndef BZ_ARRAYMAP_H
-#define BZ_ARRAYMAP_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/map.h> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * _bz_doArrayIndexMapping is a helper class.  It is specialized for
- * ranks 1, 2, 3, ..., 11.
- */
-
-template<int N_rank>
-struct _bz_doArrayIndexMapping {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, N_rank>&, 
-        const TinyVector<int,N_destRank>&, int, int, int, int, int, int,
-        int, int, int, int, int)
-    {
-        // If you try to use an array index mapping on an array with
-        // rank greater than 11, then you'll get a precondition failure
-        // here.
-        BZPRECONDITION(0);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<1> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 1>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int, int, int, int, 
-        int, int, int, int, int, int)
-    {
-        return array(index[i0]);
-    }
-};
-
-
-template<>
-struct _bz_doArrayIndexMapping<2> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 2>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int, 
-        int, int, int, int, int, int, int, int)
-    {
-        return array(index[i0], index[i1]);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<3> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 3>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int i2,
-        int, int, int, int, int, int, int, int)
-    {
-        return array(index[i0], index[i1], index[i2]);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<4> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 4>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int i2,
-        int i3, int, int, int, int, int, int, int)
-    {
-        return array(index[i0], index[i1], index[i2], index[i3]);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<5> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 5>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int i2,
-        int i3, int i4, int, int, int, int, int, int)
-    {
-        return array(index[i0], index[i1], index[i2], index[i3], index[i4]);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<6> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 6>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int i2,
-        int i3, int i4, int i5, int, int, int, int, int)
-    {
-        return array(index[i0], index[i1], index[i2], index[i3], index[i4],
-            index[i5]);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<7> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 7>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int i2,
-        int i3, int i4, int i5, int i6, int, int, int, int)
-    {
-        return array(index[i0], index[i1], index[i2], index[i3], index[i4],
-            index[i5], index[i6]);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<8> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 8>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int i2,
-        int i3, int i4, int i5, int i6, int i7, int, int, int)
-    {
-        return array(index[i0], index[i1], index[i2], index[i3], index[i4],
-            index[i5], index[i6], index[i7]);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<9> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 9>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int i2,
-        int i3, int i4, int i5, int i6, int i7, int i8, int, int)
-    {
-        return array(index[i0], index[i1], index[i2], index[i3], index[i4],
-            index[i5], index[i6], index[i7], index[i8]);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<10> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 10>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int i2,
-        int i3, int i4, int i5, int i6, int i7, int i8, int i9, int)
-    {
-        return array(index[i0], index[i1], index[i2], index[i3], index[i4],
-            index[i5], index[i6], index[i7], index[i8], index[i9]);
-    }
-};
-
-template<>
-struct _bz_doArrayIndexMapping<11> {
-    template<class T_numtype, int N_destRank>
-    static T_numtype map(const Array<T_numtype, 11>& array,
-        const TinyVector<int,N_destRank>& index, int i0, int i1, int i2,
-        int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10)
-    {
-        return array(index[i0], index[i1], index[i2], index[i3], index[i4],
-            index[i5], index[i6], index[i7], index[i8], index[i9],
-            index[i10]);
-    }
-};
-
-template<class P_numtype, int N_rank, int N_map0, int N_map1=0, int N_map2=0,
-    int N_map3=0, int N_map4=0, int N_map5=0, int N_map6=0, int N_map7=0, 
-    int N_map8=0, int N_map9=0, int N_map10=0>
-class ArrayIndexMapping {
-public:
-    typedef P_numtype T_numtype;
-    typedef const Array<T_numtype,N_rank>& T_ctorArg1;
-    typedef int                            T_ctorArg2;    // dummy
-
-    /*
-     * This enum block finds the maximum of the N_map0, N_map1, ..., N_map10
-     * parameters and stores it in maxRank10.  The rank of the expression is
-     * then maxRank10 + 1, since the IndexPlaceholders start at 0 rather than
-     * 1.  
-     */
-    enum {
-        maxRank1 = (N_map0 > N_map1) ? N_map0 : N_map1,
-        maxRank2 = (N_map2 > maxRank1) ? N_map2 : maxRank1,
-        maxRank3 = (N_map3 > maxRank2) ? N_map3 : maxRank2,
-        maxRank4 = (N_map4 > maxRank3) ? N_map4 : maxRank3,
-        maxRank5 = (N_map5 > maxRank4) ? N_map5 : maxRank4,
-        maxRank6 = (N_map6 > maxRank5) ? N_map6 : maxRank5,
-        maxRank7 = (N_map7 > maxRank6) ? N_map7 : maxRank6,
-        maxRank8 = (N_map8 > maxRank7) ? N_map8 : maxRank7,
-        maxRank9 = (N_map9 > maxRank8) ? N_map9 : maxRank8,
-        maxRank10 = (N_map10 > maxRank9) ? N_map10 : maxRank9
-    };
-
-    enum { numArrayOperands = 1, numIndexPlaceholders = 1,
-        rank = maxRank10 + 1 };
-
-    ArrayIndexMapping(const Array<T_numtype, N_rank>& array)
-        : array_(array)
-    { 
-    }
-
-    ArrayIndexMapping(const ArrayIndexMapping<T_numtype,N_rank,N_map0,
-        N_map1,N_map2,N_map3,N_map4,N_map5,N_map6,N_map7,N_map8,N_map9,
-        N_map10>& z)
-        : array_(z.array_)
-    { 
-    }
-
-#ifdef BZ_ARRAY_EXPR_PASS_INDEX_BY_VALUE
-    template<int N_destRank>
-    T_numtype operator()(TinyVector<int, N_destRank> i)
-    {
-        return _bz_doArrayIndexMapping<N_rank>::map(array_, i,
-            N_map0, N_map1, N_map2, N_map3, N_map4, N_map5, N_map6,
-            N_map7, N_map8, N_map9, N_map10);
-    }
-#else
-    template<int N_destRank>
-    T_numtype operator()(const TinyVector<int, N_destRank>& i)
-    {
-        return _bz_doArrayIndexMapping<N_rank>::map(array_, i,
-            N_map0, N_map1, N_map2, N_map3, N_map4, N_map5, N_map6,
-            N_map7, N_map8, N_map9, N_map10);
-    }
-#endif
-
-    int ascending(int rank)
-    {
-        if (N_map0 == rank)
-            return array_.ascending(0);
-        else if ((N_map1 == rank) && (N_rank > 1))
-            return array_.ascending(1);
-        else if ((N_map2 == rank) && (N_rank > 2))
-            return array_.ascending(2);
-        else if ((N_map3 == rank) && (N_rank > 3))
-            return array_.ascending(3);
-        else if ((N_map4 == rank) && (N_rank > 4))
-            return array_.ascending(4);
-        else if ((N_map5 == rank) && (N_rank > 5))
-            return array_.ascending(5);
-        else if ((N_map6 == rank) && (N_rank > 6))
-            return array_.ascending(6);
-        else if ((N_map7 == rank) && (N_rank > 7))
-            return array_.ascending(7);
-        else if ((N_map8 == rank) && (N_rank > 8))
-            return array_.ascending(8);
-        else if ((N_map9 == rank) && (N_rank > 9))
-            return array_.ascending(9);
-        else if ((N_map10 == rank) && (N_rank > 10))
-            return array_.ascending(10);
-        else
-            return INT_MIN;   // tiny(int());
-    }
-
-    int ordering(int rank)
-    {
-        if (N_map0 == rank)
-            return array_.ordering(0);
-        else if ((N_map1 == rank) && (N_rank > 1))
-            return array_.ordering(1);
-        else if ((N_map2 == rank) && (N_rank > 2))
-            return array_.ordering(2);
-        else if ((N_map3 == rank) && (N_rank > 3))
-            return array_.ordering(3);
-        else if ((N_map4 == rank) && (N_rank > 4))
-            return array_.ordering(4);
-        else if ((N_map5 == rank) && (N_rank > 5))
-            return array_.ordering(5);
-        else if ((N_map6 == rank) && (N_rank > 6))
-            return array_.ordering(6);
-        else if ((N_map7 == rank) && (N_rank > 7))
-            return array_.ordering(7);
-        else if ((N_map8 == rank) && (N_rank > 8))
-            return array_.ordering(8);
-        else if ((N_map9 == rank) && (N_rank > 9))
-            return array_.ordering(9);
-        else if ((N_map10 == rank) && (N_rank > 10))
-            return array_.ordering(10);
-        else
-            return INT_MIN;   // tiny(int());
-    }
-
-    int lbound(int rank)
-    { 
-        if (N_map0 == rank)    
-            return array_.lbound(0);
-        else if ((N_map1 == rank) && (N_rank > 1))
-            return array_.lbound(1);
-        else if ((N_map2 == rank) && (N_rank > 2))
-            return array_.lbound(2);
-        else if ((N_map3 == rank) && (N_rank > 3))
-            return array_.lbound(3);
-        else if ((N_map4 == rank) && (N_rank > 4))
-            return array_.lbound(4);
-        else if ((N_map5 == rank) && (N_rank > 5))
-            return array_.lbound(5);
-        else if ((N_map6 == rank) && (N_rank > 6))
-            return array_.lbound(6);
-        else if ((N_map7 == rank) && (N_rank > 7))
-            return array_.lbound(7);
-        else if ((N_map8 == rank) && (N_rank > 8))
-            return array_.lbound(8);
-        else if ((N_map9 == rank) && (N_rank > 9))
-            return array_.lbound(9);
-        else if ((N_map10 == rank) && (N_rank > 10))
-            return array_.lbound(10);
-        else
-            return INT_MIN;   // tiny(int());
-    }
-
-    int ubound(int rank)
-    {   
-        if (N_map0 == rank)
-            return array_.ubound(0);
-        else if ((N_map1 == rank) && (N_rank > 1))
-            return array_.ubound(1);
-        else if ((N_map2 == rank) && (N_rank > 2))
-            return array_.ubound(2);
-        else if ((N_map3 == rank) && (N_rank > 3))
-            return array_.ubound(3);
-        else if ((N_map4 == rank) && (N_rank > 4))
-            return array_.ubound(4);
-        else if ((N_map5 == rank) && (N_rank > 5))
-            return array_.ubound(5);
-        else if ((N_map6 == rank) && (N_rank > 6))
-            return array_.ubound(6);
-        else if ((N_map7 == rank) && (N_rank > 7))
-            return array_.ubound(7);
-        else if ((N_map8 == rank) && (N_rank > 8))
-            return array_.ubound(8);
-        else if ((N_map9 == rank) && (N_rank > 9))
-            return array_.ubound(9);
-        else if ((N_map10 == rank) && (N_rank > 10))
-            return array_.ubound(10);
-        else
-            return INT_MAX;   // huge(int());
-    }
-
-    // If you have a precondition failure on this routine, it means
-    // you are trying to use stack iteration mode on an expression
-    // which contains an index placeholder.  You must use index
-    // iteration mode instead.
-    int operator*()
-    {
-        BZPRECONDITION(0);
-        return 0;
-    }
-
-    // See operator*() note
-    void push(int)
-    {
-        BZPRECONDITION(0);
-    }
-
-    // See operator*() note
-    void pop(int)
-    {
-        BZPRECONDITION(0);
-    }
-
-    // See operator*() note
-    void advance()
-    {
-        BZPRECONDITION(0);
-    }
-
-    // See operator*() note
-    void advance(int)
-    {
-        BZPRECONDITION(0);
-    }
-
-    // See operator*() note
-    void loadStride(int)
-    {
-        BZPRECONDITION(0);
-    }
-
-    _bz_bool isUnitStride(int rank) const
-    {
-        BZPRECONDITION(0);
-        return false;
-    }
-
-    void advanceUnitStride()
-    {
-        BZPRECONDITION(0);
-    }
-
-    _bz_bool canCollapse(int,int) const
-    {   BZPRECONDITION(0);  return _bz_false; }
-
-    T_numtype operator[](int)
-    {   
-        BZPRECONDITION(0);
-        return T_numtype();
-    }
-
-    T_numtype fastRead(int)
-    {
-        BZPRECONDITION(0);
-        return T_numtype();
-    }
-
-    int suggestStride(int) const
-    {
-        BZPRECONDITION(0);
-        return 0;
-    }
-
-    _bz_bool isStride(int,int) const
-    {
-        BZPRECONDITION(0);
-        return _bz_true;
-    }
-
-    template<int N_rank2>
-    void moveTo(const TinyVector<int,N_rank2>& i)
-    {
-        BZPRECONDITION(0);
-        return ;
-    }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    {
-        // NEEDS_WORK-- do real formatting for reductions
-        str += "map[NEEDS_WORK]";
-    }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape& shape) const
-    { 
-        // NEEDS_WORK-- do a real shape check (tricky)
-        return _bz_true; 
-    }
-
-private:
-    ArrayIndexMapping() { }
-
-    const Array<T_numtype, N_rank>& array_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYMAP_H
-
diff --git a/weave/blitz-20001213/blitz/array/methods.cc b/weave/blitz-20001213/blitz/array/methods.cc
deleted file mode 100644
index 13b5256..0000000
--- a/weave/blitz-20001213/blitz/array/methods.cc
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * $Id$
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/08/18 19:13:08  tveldhui
- * Just prior to implementing fastRead() optimization for array
- * expression evaluation.
- *
- * Revision 1.2  1997/08/15 21:14:10  tveldhui
- * Just prior to loop-collapse change
- *
- */
-
-#ifndef BZ_ARRAYMETHODS_CC
-#define BZ_ARRAYMETHODS_CC
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/methods.cc> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_numtype, int N_rank> template<class T_expr>
-Array<P_numtype,N_rank>::Array(_bz_ArrayExpr<T_expr> expr)
-{
-    // Determine extent of the array expression
-
-    TinyVector<int,N_rank> lbound, extent, ordering;
-    TinyVector<bool,N_rank> ascendingFlag;
-
-    for (int i=0; i < N_rank; ++i)
-    {
-        lbound(i) = expr.lbound(i);
-        int ubound = expr.ubound(i);
-        extent(i) = ubound - lbound(i) + 1;
-        ordering(i) = expr.ordering(i);
-        int ascending = expr.ascending(i);
-        ascendingFlag(i) = (ascending == 1);
-
-#ifdef BZ_DEBUG
-        if ((lbound(i) == INT_MIN) || (ubound == INT_MAX) 
-          || (ordering(i) == INT_MAX) || (ascending == INT_MAX))
-        {
-          BZPRECHECK(0,
-           "Attempted to construct an array from an expression " << endl
-           << "which does not have a shape.  To use this constructor, "
-           << endl 
-           << "the expression must contain at least one array operand.");
-          return;
-        }
-#endif
-    }
-
-    Array<P_numtype,N_rank> A(lbound,extent,
-        GeneralArrayStorage<N_rank>(ordering,ascendingFlag));
-    A = expr;
-    reference(A);
-}
-
-template<class T_numtype, int N_rank>
-Array<T_numtype,N_rank>::Array(const TinyVector<int, N_rank>& lbounds,
-    const TinyVector<int, N_rank>& extent,
-    const GeneralArrayStorage<N_rank>& storage)
-    : storage_(storage)
-{
-    length_ = extent;
-    storage_.setBase(lbounds);
-    setupStorage(N_rank - 1);
-}
-
-
-/*
- * This routine takes the storage information for the array
- * (ascendingFlag_[], base_[], and ordering_[]) and the size
- * of the array (length_[]) and computes the stride vector
- * (stride_[]) and the zero offset (see explanation in array.h).
- */
-template<class P_numtype, int N_rank>
-_bz_inline2 void Array<P_numtype, N_rank>::computeStrides()
-{
-    if (N_rank > 1)
-    {
-      int stride = 1;
-
-      // This flag simplifies the code in the loop, encouraging
-      // compile-time computation of strides through constant folding.
-      _bz_bool allAscending = storage_.allRanksStoredAscending();
-
-      // BZ_OLD_FOR_SCOPING
-      int n;
-      for (n=0; n < N_rank; ++n)
-      {
-          int strideSign = +1;
-
-          // If this rank is stored in descending order, then the stride
-          // will be negative.
-          if (!allAscending)
-          {
-            if (!isRankStoredAscending(ordering(n)))
-                strideSign = -1;
-          }
-
-          // The stride for this rank is the product of the lengths of
-          // the ranks minor to it.
-          stride_[ordering(n)] = stride * strideSign;
-
-          stride *= length_[ordering(n)];
-      }
-    }
-    else {
-        // Specialization for N_rank == 1
-        // This simpler calculation makes it easier for the compiler
-        // to propagate stride values.
-
-        if (isRankStoredAscending(0))
-            stride_[0] = 1;
-        else
-            stride_[0] = -1;
-    }
-
-    calculateZeroOffset();
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::calculateZeroOffset()
-{
-    // Calculate the offset of (0,0,...,0)
-    zeroOffset_ = 0;
-
-    // zeroOffset_ = - sum(where(ascendingFlag_, stride_ * base_,
-    //     (length_ - 1 + base_) * stride_))
-    for (int n=0; n < N_rank; ++n)
-    {
-        if (!isRankStoredAscending(n))
-            zeroOffset_ -= (length_[n] - 1 + base(n)) * stride_[n];
-        else
-            zeroOffset_ -= stride_[n] * base(n);
-    }
-}
-
-template<class T_numtype, int N_rank>
-_bz_bool Array<T_numtype, N_rank>::isStorageContiguous() const
-{
-    // The storage is contiguous if for the set
-    // { | stride[i] * extent[i] | }, i = 0..N_rank-1,
-    // there is only one value which is not in the set
-    // of strides; and if there is one stride which is 1.
-
-    // This algorithm is quadratic in the rank.  It is hard
-    // to imagine this being a serious problem.
-
-    int numStridesMissing = 0;
-    bool haveUnitStride = _bz_false;
-
-    for (int i=0; i < N_rank; ++i)
-    {
-        int stride = BZ_MATHFN_SCOPE(abs)(stride_[i]);
-        if (stride == 1)
-            haveUnitStride = _bz_true;
-
-        int vi = stride * length_[i];
-
-        int j = 0;
-        for (j=0; j < N_rank; ++j)
-            if (BZ_MATHFN_SCOPE(abs)(stride_[j]) == vi)
-                break;
-
-        if (j == N_rank)
-        {
-            ++numStridesMissing;
-            if (numStridesMissing == 2)
-                return _bz_false;
-        }
-    }
-
-    return haveUnitStride;
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::dumpStructureInformation(ostream& os) const
-{
-    os << "Dump of Array<" << BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(P_numtype) 
-       << ", " << N_rank << ">:" << endl
-       << "ordering_      = " << storage_.ordering() << endl
-       << "ascendingFlag_ = " << storage_.ascendingFlag() << endl
-       << "base_          = " << storage_.base() << endl
-       << "length_        = " << length_ << endl
-       << "stride_        = " << stride_ << endl
-       << "zeroOffset_    = " << zeroOffset_ << endl
-       << "numElements()  = " << numElements() << endl
-       << "isStorageContiguous() = " << isStorageContiguous() << endl;
-}
-
-/*
- * Make this array a view of another array's data.
- */
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::reference(const Array<P_numtype, N_rank>& array)
-{
-    storage_ = array.storage_;
-    length_ = array.length_;
-    stride_ = array.stride_;
-    zeroOffset_ = array.zeroOffset_;
-
-    MemoryBlockReference<P_numtype>::changeBlock(array.noConst(),
-        array.zeroOffset_);
-
-    data_ = const_cast<P_numtype*>(array.data_);
-}
-
-/*
- * This method is called to allocate memory for a new array.  
- */
-template<class P_numtype, int N_rank>
-_bz_inline2 void Array<P_numtype, N_rank>::setupStorage(int lastRankInitialized)
-{
-    TAU_TYPE_STRING(p1, "Array<T,N>::setupStorage() [T="
-        + CT(P_numtype) + ",N=" + CT(N_rank) + "]");
-    TAU_PROFILE(" ", p1, TAU_BLITZ);
-
-    /*
-     * If the length of some of the ranks was unspecified, fill these
-     * in using the last specified value.
-     *
-     * e.g. Array<int,3> A(40) results in a 40x40x40 array.
-     */
-    for (int i=lastRankInitialized + 1; i < N_rank; ++i)
-    {
-        storage_.setBase(i, storage_.base(lastRankInitialized));
-        length_[i] = length_[lastRankInitialized];
-    }
-
-    // Compute strides
-    computeStrides();
-
-    // Allocate a block of memory
-    MemoryBlockReference<P_numtype>::newBlock(numElements());
-
-    // Adjust the base of the array to account for non-zero base
-    // indices and reversals
-    data_ += zeroOffset_;
-}
-
-template<class T_numtype, int N_rank>
-Array<T_numtype, N_rank> Array<T_numtype, N_rank>::copy() const
-{
-    if (numElements())
-    {
-        Array<T_numtype, N_rank> z(length_, storage_);
-        z = *this;
-        return z;
-    }
-    else {
-        // Null array-- don't bother allocating an empty block.
-        return *this;
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::makeUnique()
-{
-    if (numReferences() > 1)
-    {
-        T_array tmp = copy();
-        reference(tmp);
-    }
-}
-
-template<class T_numtype, int N_rank>
-Array<T_numtype, N_rank> Array<T_numtype, N_rank>::transpose(int r0, int r1, 
-    int r2, int r3, int r4, int r5, int r6, int r7, int r8, int r9, int r10)
-{
-    T_array B(*this);
-    B.transposeSelf(r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10);
-    return B;
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::transposeSelf(int r0, int r1, int r2, int r3,
-    int r4, int r5, int r6, int r7, int r8, int r9, int r10)
-{
-    BZPRECHECK(r0+r1+r2+r3+r4+r5+r6+r7+r8+r9+r10 == N_rank * (N_rank-1) / 2,
-        "Invalid array transpose() arguments." << endl
-        << "Arguments must be a permutation of the numerals (0,...,"
-        << (N_rank - 1) << ")");
-
-    // Create a temporary reference copy of this array
-    Array<T_numtype, N_rank> x(*this);
-
-    // Now reorder the dimensions using the supplied permutation
-    doTranspose(0, r0, x);
-    doTranspose(1, r1, x);
-    doTranspose(2, r2, x);
-    doTranspose(3, r3, x);
-    doTranspose(4, r4, x);
-    doTranspose(5, r5, x);
-    doTranspose(6, r6, x);
-    doTranspose(7, r7, x);
-    doTranspose(8, r8, x);
-    doTranspose(9, r9, x);
-    doTranspose(10, r10, x);
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::doTranspose(int destRank, int sourceRank,
-    Array<T_numtype, N_rank>& array)
-{
-    // BZ_NEEDS_WORK: precondition check
-
-    if (destRank >= N_rank)
-        return;
-
-    length_[destRank] = array.length_[sourceRank];
-    stride_[destRank] = array.stride_[sourceRank];
-    storage_.setAscendingFlag(destRank, 
-        array.isRankStoredAscending(sourceRank));
-    storage_.setBase(destRank, array.base(sourceRank));
-
-    // BZ_NEEDS_WORK: Handling the storage ordering is currently O(N^2)
-    // but it can be done fairly easily in linear time by constructing
-    // the appropriate permutation.
-
-    // Find sourceRank in array.storage_.ordering_
-    int i=0;
-    for (; i < N_rank; ++i)
-        if (array.storage_.ordering(i) == sourceRank)
-            break;
-
-    storage_.setOrdering(i, destRank);
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::reverseSelf(int rank)
-{
-    BZPRECONDITION(rank < N_rank);
-
-    storage_.setAscendingFlag(rank, !isRankStoredAscending(rank));
-
-    int adjustment = stride_[rank] * (lbound(rank) + ubound(rank));
-    zeroOffset_ += adjustment;
-    data_ += adjustment;
-    stride_[rank] *= -1;
-}
-
-template<class T_numtype, int N_rank>
-Array<T_numtype, N_rank> Array<T_numtype,N_rank>::reverse(int rank)
-{
-    T_array B(*this);
-    B.reverseSelf(rank);
-    return B;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-Array<T_numtype2,N_rank> Array<T_numtype,N_rank>::extractComponent(T_numtype2, 
-    int componentNumber, int numComponents) const
-{
-    BZPRECONDITION((componentNumber >= 0) 
-        && (componentNumber < numComponents));
-
-    TinyVector<int,N_rank> stride2;
-    stride2 = stride_ * numComponents;
-    const T_numtype2* dataFirst2 = 
-        ((const T_numtype2*)dataFirst()) + componentNumber;
-    return Array<T_numtype2,N_rank>(const_cast<T_numtype2*>(dataFirst2), 
-        length_, stride2, storage_);
-}
-
-/* 
- * These routines reindex the current array to use a new base vector.
- * The first reindexes the array, the second just returns a reindex view
- * of the current array, leaving the current array unmodified.
- * (Contributed by Derrick Bass)
- */
-template<class P_numtype, int N_rank>
-_bz_inline2 void Array<P_numtype, N_rank>::reindexSelf(const 
-    TinyVector<int, N_rank>& newBase) 
-{
-    data_ += dot(base() - newBase, stride_);
-    storage_.setBase(newBase);
-    calculateZeroOffset();
-}
-
-template<class P_numtype, int N_rank>
-_bz_inline2 Array<P_numtype, N_rank> 
-Array<P_numtype, N_rank>::reindex(const TinyVector<int, N_rank>& newBase) 
-{
-    T_array B(*this);
-    B.reindexSelf(newBase);
-    return B;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAY_CC
-
diff --git a/weave/blitz-20001213/blitz/array/misc.cc b/weave/blitz-20001213/blitz/array/misc.cc
deleted file mode 100644
index f4a046b..0000000
--- a/weave/blitz-20001213/blitz/array/misc.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef BZ_ARRAYMISC_CC
-#define BZ_ARRAYMISC_CC
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/misc.cc> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-#define BZ_ARRAY_DECLARE_UOP(fn, fnobj)                                \
-template<class T_numtype, int N_rank>                                  \
-inline                                                                 \
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<FastArrayIterator<T_numtype,N_rank>, \
-    fnobj<T_numtype> > >                                               \
-fn(const Array<T_numtype,N_rank>& array)                               \
-{                                                                      \
-    return _bz_ArrayExprUnaryOp<FastArrayIterator<T_numtype,N_rank>,   \
-        fnobj<T_numtype> >(array.beginFast());                         \
-}                                                                      \
-                                                                       \
-template<class T_expr>                                                 \
-inline                                                                 \
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<T_expr>,              \
-    fnobj<_bz_typename T_expr::T_numtype> > >                          \
-fn(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)                              \
-{                                                                      \
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<T_expr>,                 \
-        fnobj<_bz_typename T_expr::T_numtype> >(expr);                 \
-}                                                                      
-                                                                       
-BZ_ARRAY_DECLARE_UOP(operator!, LogicalNot)
-BZ_ARRAY_DECLARE_UOP(operator~, BitwiseNot)
-BZ_ARRAY_DECLARE_UOP(operator-, Negate)
-
-/*
- * cast() functions, for explicit type casting
- */
-
-template<class T_numtype, int N_rank, class T_cast>
-inline                                                                 
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<FastArrayIterator<T_numtype,N_rank>,   
-    Cast<T_numtype, T_cast> > >
-cast(const Array<T_numtype,N_rank>& array, T_cast)
-{                                                                      
-    return _bz_ArrayExprUnaryOp<FastArrayIterator<T_numtype,N_rank>,      
-        Cast<T_numtype,T_cast> >(array.beginFast());                            
-}                                                                      
-                                                                       
-template<class T_expr, class T_cast>
-inline                                                                 
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<T_expr>,              
-    Cast<_bz_typename T_expr::T_numtype,T_cast> > >                          
-cast(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr, T_cast)
-{                                                                      
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<T_expr>,                 
-        Cast<_bz_typename T_expr::T_numtype,T_cast> >(expr);                 
-}                                                                      
-                                                                       
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYMISC_CC
-
diff --git a/weave/blitz-20001213/blitz/array/multi.h b/weave/blitz-20001213/blitz/array/multi.h
deleted file mode 100644
index d0e3647..0000000
--- a/weave/blitz-20001213/blitz/array/multi.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// Support for multicomponent arrays
-
-#ifndef BZ_ARRAYMULTI_H
-#define BZ_ARRAYMULTI_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/multi.h> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * The multicomponent_traits class provides a mapping from multicomponent
- * tuples to the element type they contain.  For example:
- *
- * multicomponent_traits<complex<float> >::T_numtype is float,
- * multicomponent_traits<TinyVector<int,3> >::T_numtype is int.
- *
- * This is used to support Array<T,N>::operator[], which extracts components
- * from a multicomponent array.
- */
-
-// By default, produce a harmless component type, and zero components.
-template<class T_component>
-struct multicomponent_traits {
-    typedef T_component T_element;
-    enum { numComponents = 0 };
-};
-
-// TinyVector
-template<class T_numtype, int N_rank>
-struct multicomponent_traits<TinyVector<T_numtype,N_rank> > {
-    typedef T_numtype T_element;
-    enum { numComponents = N_rank };
-};
-
-#ifdef BZ_HAVE_COMPLEX_MATH
-// complex<T>
-template<class T>
-struct multicomponent_traits<complex<T> > {
-    typedef T T_element;
-    enum { numComponents = 2 };
-};
-#endif
-
-// This macro is provided so that users can register their own
-// multicomponent types.
-
-#define BZ_DECLARE_MULTICOMPONENT_TYPE(T_tuple,T,N)          \
-  BZ_NAMESPACE(blitz)                                        \
-  template<>                                                 \
-  struct multicomponent_traits<T_tuple > {                   \
-    typedef T T_element;                                     \
-    enum { numComponents = N };                              \
-  };                                                         \
-  BZ_NAMESPACE_END
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYMULTI_H
diff --git a/weave/blitz-20001213/blitz/array/newbops.cc b/weave/blitz-20001213/blitz/array/newbops.cc
deleted file mode 100644
index 1332527..0000000
--- a/weave/blitz-20001213/blitz/array/newbops.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-#ifndef BZ_ARRAYBOPS_CC
-#define BZ_ARRAYBOPS_CC
-
-#ifndef BZ_ARRAYEXPR_H
- #error <blitz/arraybops.cc> must be included after <blitz/arrayexpr.h>
-#endif
-
-#include <blitz/array/asexpr.h>
-
-BZ_NAMESPACE(blitz)
-
-#define BZ_DECLARE_ARRAY_ET(name, applic)                                 \
-                                                                          \
-template<class T_numtype1, int N_rank1, class T_other>                    \
-inline                                                                    \
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>,         \
-    _bz_typename asExpr<T_other>::T_expr,                                 \
-    applic<T_numtype1,                                                    \
-    _bz_typename asExpr<T_other>::T_expr::T_numtype> > >                  \
-name (const Array<T_numtype1,N_rank1>& d1,                                \
-    const T_other& d2)                                                    \
-{                                                                         \
-    return _bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1,        \
-        N_rank1>,                                                         \
-        _bz_typename asExpr<T_other>::T_expr,                             \
-        applic<T_numtype1,                                                \
-        _bz_typename asExpr<T_other>::T_expr::T_numtype> > >              \
-      (d1.begin(),d2);                                                    \
-}                                                                         \
-                                                                          \
-template<class T_expr1, class T_other>                                    \
-inline                                                                    \
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<T_expr1>,                     \
-    _bz_typename asExpr<T_other>::T_expr,                                 \
-    applic<_bz_typename T_expr1::T_numtype,                               \
-        _bz_typename asExpr<T_other>::T_expr::T_numtype> > >              \
-name(const _bz_ArrayExpr<T_expr1>& d1,                                    \
-    const T_other& d2)                                                    \
-{                                                                         \
-    return _bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<T_expr1>,          \
-        _bz_typename asExpr<T_other>::T_expr,                             \
-        applic<_bz_typename T_expr1::T_numtype,                           \
-            _bz_typename asExpr<T_other>::T_expr::T_numtype> > >(d1,d2);  \
-}                                                                         \
-                                                                          \
-template<class T1, class T2>                                              \
-inline                                                                    \
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_typename asExpr<T1>::T_expr,            \
-    _bz_typename asExpr<T2>::T_expr,                                      \
-    applic<_bz_typename asExpr<T1>::T_expr::T_numtype,                    \
-        _bz_typename asExpr<T2>::T_expr::T_numtype> > >                   \
-name(const T1& d1,                                                        \
-    const ETBase<T2>& d2)                                                 \
-{                                                                         \
-    return _bz_ArrayExpr<_bz_ArrayExprOp<_bz_typename                     \
-        asExpr<T1>::T_expr,                                               \
-        _bz_typename asExpr<T2>::T_expr,                                  \
-        applic<_bz_typename asExpr<T1>::T_expr::T_numtype,                \
-            _bz_typename asExpr<T2>::T_expr::T_numtype> > >               \
-        (d1, static_cast<const T2&>(d2));                                 \
-}
-
-BZ_DECLARE_ARRAY_ET(operator+, Add)
-BZ_DECLARE_ARRAY_ET(operator-, Subtract)
-BZ_DECLARE_ARRAY_ET(operator*, Multiply)
-BZ_DECLARE_ARRAY_ET(operator/, Divide)
-BZ_DECLARE_ARRAY_ET(operator%, Modulo)
-BZ_DECLARE_ARRAY_ET(operator^, BitwiseXor)
-BZ_DECLARE_ARRAY_ET(operator&, BitwiseAnd)
-BZ_DECLARE_ARRAY_ET(operator|, BitwiseOr)
-BZ_DECLARE_ARRAY_ET(operator>>,ShiftRight)
-BZ_DECLARE_ARRAY_ET(operator<<,ShiftLeft)
-BZ_DECLARE_ARRAY_ET(operator>, Greater)
-BZ_DECLARE_ARRAY_ET(operator<, Less)
-BZ_DECLARE_ARRAY_ET(operator>=, GreaterOrEqual)
-BZ_DECLARE_ARRAY_ET(operator<=, LessOrEqual)
-BZ_DECLARE_ARRAY_ET(operator==, Equal)
-BZ_DECLARE_ARRAY_ET(operator!=, NotEqual)
-BZ_DECLARE_ARRAY_ET(operator&&, LogicalAnd)
-BZ_DECLARE_ARRAY_ET(operator||, LogicalOr)
-
-BZ_DECLARE_ARRAY_ET(atan2, _bz_atan2)
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYBOPS_CC
diff --git a/weave/blitz-20001213/blitz/array/ops.cc b/weave/blitz-20001213/blitz/array/ops.cc
deleted file mode 100644
index 831f2c8..0000000
--- a/weave/blitz-20001213/blitz/array/ops.cc
+++ /dev/null
@@ -1,355 +0,0 @@
-#ifndef BZ_ARRAYOPS_CC
-#define BZ_ARRAYOPS_CC
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/ops.cc> must be included via <blitz/array.h>
-#endif
-
-#ifndef BZ_UPDATE_H
- #include <blitz/update.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * Constant operands
- */
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>& Array<T_numtype,N_rank>::initialize(
-    T_numtype x)
-{
-    (*this) = _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-#ifdef BZ_NEW_EXPRESSION_TEMPLATES
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype,N_rank>&
-Array<T_numtype,N_rank>::operator=(const ETBase<T_expr>& expr)
-{
-    evaluate(static_cast<const T_expr&>(expr), 
-        _bz_update<T_numtype, _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator=(const Array<T_numtype,N_rank>& x)
-{
-    (*this) = _bz_ArrayExpr<FastArrayIterator<T_numtype, N_rank> >
-        (x.beginFast());
-    return *this;
-}
-
-#define BZ_ARRAY_UPDATE(op,name) \
-template<class T_numtype, int N_rank> \
-template<class T> \
-inline Array<T_numtype,N_rank>& \
-Array<T_numtype,N_rank>::operator op(const T& expr) \
-{ \
-    evaluate(_bz_typename asExpr<T>::T_expr(expr), \
-      name<T_numtype, _bz_typename asExpr<T>::T_expr::T_numtype>()); \
-    return *this; \
-}
-
-BZ_ARRAY_UPDATE(+=, _bz_plus_update)
-BZ_ARRAY_UPDATE(-=, _bz_minus_update)
-BZ_ARRAY_UPDATE(*=, _bz_multiply_update)
-BZ_ARRAY_UPDATE(/=, _bz_divide_update)
-BZ_ARRAY_UPDATE(%=, _bz_mod_update)
-BZ_ARRAY_UPDATE(^=, _bz_xor_update)
-BZ_ARRAY_UPDATE(&=, _bz_bitand_update)
-BZ_ARRAY_UPDATE(|=, _bz_bitor_update)
-BZ_ARRAY_UPDATE(<<=, _bz_shiftl_update)
-BZ_ARRAY_UPDATE(>>=, _bz_shiftr_update)
-
-#else
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>& 
-Array<T_numtype,N_rank>::operator+=(T_numtype x)
-{
-    (*this) += _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype,N_rank>::operator-=(T_numtype x)
-{
-    (*this) -= _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype,N_rank>::operator*=(T_numtype x)
-{
-    (*this) *= _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype,N_rank>::operator/=(T_numtype x)
-{
-    (*this) /= _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype,N_rank>::operator%=(T_numtype x)
-{
-    (*this) %= _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype,N_rank>::operator^=(T_numtype x)
-{
-    (*this) ^= _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype,N_rank>::operator&=(T_numtype x)
-{
-    (*this) &= _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype,N_rank>::operator|=(T_numtype x)
-{
-    (*this) |= _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype,N_rank>::operator>>=(T_numtype x)
-{
-    (*this) <<= _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype,N_rank>::operator<<=(T_numtype x)
-{
-    (*this) <<= _bz_ArrayExpr<_bz_ArrayExprConstant<T_numtype> >(x);
-    return *this;
-}
-
-/*
- * Array operands
- */
-
-template<class T_numtype, int N_rank>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator=(const Array<T_numtype,N_rank>& x)
-{
-    (*this) = _bz_ArrayExpr<FastArrayIterator<T_numtype, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) = _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator+=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) += _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator-=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) -= _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator*=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) *= _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator/=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) /= _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator%=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) %= _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator^=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) ^= _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator&=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) &= _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator|=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) |= _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator>>=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) >>= _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_numtype2>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator<<=(const Array<T_numtype2,N_rank>& x)
-{
-    (*this) <<= _bz_ArrayExpr<FastArrayIterator<T_numtype2, N_rank> >(x.beginFast());
-    return *this;
-}
-
-/*
- * Array expression operands
- */
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_update<T_numtype, _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator+=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_plus_update<T_numtype, _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator-=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_minus_update<T_numtype, 
-        _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator*=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_multiply_update<T_numtype,
-        _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator/=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_divide_update<T_numtype,
-        _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator%=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_mod_update<T_numtype,
-        _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator^=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_xor_update<T_numtype,
-        _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator&=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_bitand_update<T_numtype,
-        _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator|=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_bitor_update<T_numtype,
-        _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator>>=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_shiftr_update<T_numtype,
-        _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-template<class T_numtype, int N_rank> template<class T_expr>
-inline Array<T_numtype, N_rank>&
-Array<T_numtype, N_rank>::operator<<=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr)
-{
-    evaluate(expr, _bz_shiftl_update<T_numtype,
-        _bz_typename T_expr::T_numtype>());
-    return *this;
-}
-
-#endif // BZ_NEW_EXPRESSION_TEMPLATES
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYOPS_CC
diff --git a/weave/blitz-20001213/blitz/array/reduce.cc b/weave/blitz-20001213/blitz/array/reduce.cc
deleted file mode 100644
index 36c13e5..0000000
--- a/weave/blitz-20001213/blitz/array/reduce.cc
+++ /dev/null
@@ -1,167 +0,0 @@
-#ifndef BZ_ARRAYREDUCE_H
- #error <blitz/array/reduce.cc> must be included via <blitz/array/reduce.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class T_expr, class T_reduction>
-_bz_typename T_reduction::T_resulttype
-_bz_reduceWithIndexTraversal(T_expr expr, T_reduction reduction);
-
-template<class T_expr, class T_reduction>
-_bz_typename T_reduction::T_resulttype
-_bz_reduceWithStackTraversal(T_expr expr, T_reduction reduction);
-
-template<class T_expr, class T_reduction>
-_bz_typename T_reduction::T_resulttype
-_bz_ArrayExprFullReduce(T_expr expr, T_reduction reduction)
-{
-#ifdef BZ_TAU_PROFILING
-    // Tau profiling code.  Provide Tau with a pretty-printed version of
-    // the expression.
-    static string exprDescription;
-    if (!exprDescription.length())      // faked static initializer
-    {
-        exprDescription = T_reduction::name();
-        exprDescription += "(";
-        prettyPrintFormat format(_bz_true);   // Terse mode on
-        expr.prettyPrint(exprDescription, format);
-        exprDescription += ")";
-    }
-    TAU_PROFILE(" ", exprDescription, TAU_BLITZ);
-#endif // BZ_TAU_PROFILING
-
-    return _bz_reduceWithIndexTraversal(expr, reduction);
-
-#ifdef BZ_NOT_IMPLEMENTED_FLAG
-    if ((T_expr::numIndexPlaceholders > 0) || (T_reduction::needIndex))
-    {
-        // The expression involves index placeholders, so have to
-        // use index traversal rather than stack traversal.
-        return reduceWithIndexTraversal(expr, reduction);
-    }
-    else {
-        // Use a stack traversal
-        return reduceWithStackTraversal(expr, reduction);
-    }
-#endif
-}
-
-template<class T_expr, class T_reduction>
-_bz_typename T_reduction::T_resulttype
-_bz_reduceWithIndexTraversal(T_expr expr, T_reduction reduction)
-{
-    // This is optimized assuming C-style arrays.
-
-    reduction.reset();
-
-    const int rank = T_expr::rank;
-
-    TinyVector<int,rank> index, first, last;
-
-    unsigned long count = 1;
-
-    for (int i=0; i < rank; ++i)
-    {
-        index(i) = expr.lbound(i);
-        first(i) = index(i);
-        last(i) = expr.ubound(i) + 1;
-        count *= last(i) - first(i);
-    }
-
-    const int maxRank = rank - 1;
-    int lastlbound = expr.lbound(maxRank);
-    int lastubound = expr.ubound(maxRank);
-
-    int lastIndex = lastubound + 1;
-
-    _bz_bool loopFlag = _bz_true;
-
-    while(loopFlag) {
-        for (index[maxRank] = lastlbound; index[maxRank] < lastIndex;
-            ++index[maxRank])
-        {
-            if (!reduction(expr(index), index[maxRank]))
-            {
-                loopFlag = _bz_false;
-                break;
-            }
-        }
-
-        int j = rank-2;
-        for (; j >= 0; --j)
-        {
-            index(j+1) = first(j+1);
-            ++index(j);
-            if (index(j) != last(j))
-                break;
-        }
-
-        if (j < 0)
-            break;
-    }
-
-    return reduction.result(count);
-}
-
-
-template<class T_expr, class T_reduction>
-_bz_typename T_reduction::T_resulttype
-_bz_reduceWithIndexVectorTraversal(T_expr expr, T_reduction reduction)
-{
-    // This version is for reductions that require a vector
-    // of index positions.
-
-    reduction.reset();
-
-    const int rank = T_expr::rank;
-
-    TinyVector<int,rank> index, first, last;
-
-    unsigned long count = 1;
-
-    for (int i=0; i < rank; ++i)
-    {
-        index(i) = expr.lbound(i);
-        first(i) = index(i);
-        last(i) = expr.ubound(i) + 1;
-        count *= last(i) - first(i);
-    }
-
-    const int maxRank = rank - 1;
-    int lastlbound = expr.lbound(maxRank);
-    int lastubound = expr.ubound(maxRank);
-
-    int lastIndex = lastubound + 1;
-
-    _bz_bool loopFlag = _bz_true;
-
-    while(loopFlag) {
-        for (index[maxRank] = lastlbound; index[maxRank] < lastIndex;
-            ++index[maxRank])
-        {
-            if (!reduction(expr(index), index))
-            {
-                loopFlag = _bz_false;
-                break;
-            }
-        }
-
-        int j = rank-2;
-        for (; j >= 0; --j)
-        {
-            index(j+1) = first(j+1);
-            ++index(j);
-            if (index(j) != last(j))
-                break;
-        }
-
-        if (j < 0)
-            break;
-    }
-
-    return reduction.result(count);
-}
-
-BZ_NAMESPACE_END
-
diff --git a/weave/blitz-20001213/blitz/array/reduce.h b/weave/blitz-20001213/blitz/array/reduce.h
deleted file mode 100644
index 803ea17..0000000
--- a/weave/blitz-20001213/blitz/array/reduce.h
+++ /dev/null
@@ -1,344 +0,0 @@
-/***************************************************************************
- * blitz/array/reduce.h   Reductions of an array (or array expression) in a 
- *                        single rank: sum, mean, min, minIndex, max, maxIndex, 
- *                        product, count, any, all
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:14  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_ARRAYREDUCE_H
-#define BZ_ARRAYREDUCE_H
-
-#ifndef BZ_ARRAYEXPR_H
- #error <blitz/array/reduce.h> must be included after <blitz/array/expr.h>
-#endif
-
-#ifndef BZ_REDUCE_H
- #include <blitz/reduce.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class T_expr, int N_index, class T_reduction>
-class _bz_ArrayExprReduce {
-
-public:   
-    typedef _bz_typename T_reduction::T_numtype T_numtype;
-    typedef T_expr      T_ctorArg1;
-    typedef T_reduction T_ctorArg2;
-
-    enum { numArrayOperands = BZ_ENUM_CAST(T_expr::numArrayOperands),
-        numIndexPlaceholders = BZ_ENUM_CAST(T_expr::numIndexPlaceholders) + 1,
-        rank = BZ_ENUM_CAST(T_expr::rank) - 1 };
-
-    _bz_ArrayExprReduce(const _bz_ArrayExprReduce<T_expr,N_index,T_reduction>&
-        reduce)
-        : reduce_(reduce.reduce_), iter_(reduce.iter_)
-    {
-    }
-
-    _bz_ArrayExprReduce(T_expr expr)
-        : iter_(expr)
-    { }
-
-    _bz_ArrayExprReduce(T_expr expr, T_reduction reduce)
-        : iter_(expr), reduce_(reduce)
-    { }
-
-    int ascending(int rank)
-    { return iter_.ascending(rank); }
-
-    int ordering(int rank)
-    { return iter_.ordering(rank); }
-
-    int lbound(int rank)
-    { return iter_.lbound(rank); }
-
-    int ubound(int rank)
-    { return iter_.ubound(rank); }
-
-    template<int N_destRank>
-    T_numtype operator()(const TinyVector<int, N_destRank>& destIndex)
-    {
-        BZPRECHECK(N_destRank == N_index,  
-            "Array reduction performed over rank " << N_index 
-            << " to produce a rank " << N_destRank << " expression." << endl
-            << "You must reduce over rank " << N_destRank << " instead.");
-
-        TinyVector<int, N_destRank + 1> index;
-
-        // This metaprogram copies elements 0..N-1 of destIndex into index
-        _bz_meta_vecAssign<N_index, 0>::assign(index, destIndex, 
-            _bz_update<int,int>());
-
-        int lbound = iter_.lbound(N_index);
-        int ubound = iter_.ubound(N_index);
-
-        // NEEDS_WORK: replace with tiny(int()) and huge(int()) once
-        // <limits> widely available
-        BZPRECHECK((lbound != INT_MIN) && (ubound != INT_MAX),
-           "Array reduction performed over rank " << N_index
-           << " is unbounded." << endl 
-           << "There must be an array object in the expression being reduced"
-           << endl << "which provides a bound in rank " << N_index << ".");
-
-        reduce_.reset();
-
-        for (index[N_index] = iter_.lbound(N_index);
-            index[N_index] <= ubound; ++index[N_index])
-        {
-            if (!reduce_(iter_(index), index[N_index]))
-                break;
-        }
-
-        return reduce_.result(ubound-lbound+1);
-    }
-
-    // If you have a precondition failure on this routine, it means
-    // you are trying to use stack iteration mode on an expression
-    // which contains an index placeholder.  You must use index
-    // iteration mode instead.
-    int operator*()
-    {
-        BZPRECONDITION(0);
-        return 0;
-    }
-
-    // See operator*() note
-    void push(int)
-    {
-        BZPRECONDITION(0);
-    }
-
-    // See operator*() note
-    void pop(int)
-    {
-        BZPRECONDITION(0);
-    }
-
-    // See operator*() note
-    void advance()
-    {
-        BZPRECONDITION(0);
-    }
-
-    // See operator*() note
-    void advance(int)
-    {
-        BZPRECONDITION(0);
-    }
-
-    // See operator*() note
-    void loadStride(int)
-    {
-        BZPRECONDITION(0);
-    }
-
-    _bz_bool isUnitStride(int rank) const
-    {
-        BZPRECONDITION(0);
-        return false;
-    }
-
-    void advanceUnitStride()
-    {
-        BZPRECONDITION(0);
-    }
-
-    _bz_bool canCollapse(int,int) const
-    {   BZPRECONDITION(0); return _bz_false; }
-
-    T_numtype operator[](int)
-    {
-        BZPRECONDITION(0);
-        return T_numtype();
-    }
-
-    T_numtype fastRead(int)
-    {
-        BZPRECONDITION(0);
-        return T_numtype();
-    }
-
-    int suggestStride(int) const
-    {
-        BZPRECONDITION(0);
-        return 0;
-    }
-
-    _bz_bool isStride(int,int) const
-    {
-        BZPRECONDITION(0);
-        return _bz_true;
-    }
-
-    template<int N_rank>
-    void moveTo(const TinyVector<int,N_rank>& i)
-    {
-        BZPRECONDITION(0);
-        return;
-    }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    {
-        // NEEDS_WORK-- do real formatting for reductions
-        str += "reduce[NEEDS_WORK](";
-        iter_.prettyPrint(str,format);
-        str += ")";
-    }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape& shape) const
-    { 
-        // NEEDS_WORK-- do a real shape check (tricky)
-        return _bz_true; 
-    }
-
-private: 
-    _bz_ArrayExprReduce() { }
-
-    T_reduction reduce_;
-    T_expr iter_;
-};
-
-#define BZ_DECL_ARRAY_PARTIAL_REDUCE(fn,reduction)                      \
-template<class T_expr, int N_index>                                     \
-inline                                                                  \
-_bz_ArrayExpr<_bz_ArrayExprReduce<_bz_ArrayExpr<T_expr>, N_index,       \
-    reduction<_bz_typename T_expr::T_numtype> > >                       \
-fn(_bz_ArrayExpr<T_expr> expr, const IndexPlaceholder<N_index>&)        \
-{                                                                       \
-    return _bz_ArrayExprReduce<_bz_ArrayExpr<T_expr>, N_index,          \
-        reduction<_bz_typename T_expr::T_numtype> >(expr);              \
-}                                                                       \
-                                                                        \
-template<class T_numtype, int N_rank, int N_index>                      \
-inline                                                                  \
-_bz_ArrayExpr<_bz_ArrayExprReduce<FastArrayIterator<T_numtype,N_rank>,  \
-    N_index, reduction<T_numtype> > >                                   \
-fn(const Array<T_numtype, N_rank>& array,                               \
-    const IndexPlaceholder<N_index>&)                                   \
-{                                                                       \
-    return _bz_ArrayExprReduce<FastArrayIterator<T_numtype,N_rank>,     \
-        N_index, reduction<T_numtype> > (array.beginFast());            \
-}                        
-
-BZ_DECL_ARRAY_PARTIAL_REDUCE(sum,      ReduceSum)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(mean,     ReduceMean)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(min,      ReduceMin)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(minIndex, ReduceMinIndex)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(max,      ReduceMax)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(maxIndex, ReduceMaxIndex)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(product,  ReduceProduct)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(count,    ReduceCount)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(any,      ReduceAny)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(all,      ReduceAll)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(first,    ReduceFirst)
-BZ_DECL_ARRAY_PARTIAL_REDUCE(last,     ReduceLast)
-
-/*
- * Complete reductions
- */
-
-// Prototype of reduction function
-template<class T_expr, class T_reduction>
-_bz_typename T_reduction::T_resulttype
-_bz_ArrayExprFullReduce(T_expr expr, T_reduction reduction);
-
-#define BZ_DECL_ARRAY_FULL_REDUCE(fn,reduction)                         \
-template<class T_expr>                                                  \
-inline                                                                  \
-_bz_typename reduction<_bz_typename T_expr::T_numtype>::T_resulttype    \
-fn(_bz_ArrayExpr<T_expr> expr)                                          \
-{                                                                       \
-    return _bz_ArrayExprFullReduce(expr,                                \
-        reduction<_bz_typename T_expr::T_numtype>());                   \
-}                                                                       \
-                                                                        \
-template<class T_numtype, int N_rank>                                   \
-inline                                                                  \
-_bz_typename reduction<T_numtype>::T_resulttype                         \
-fn(const Array<T_numtype, N_rank>& array)                               \
-{                                                                       \
-    return _bz_ArrayExprFullReduce(array.beginFast(),                   \
-        reduction<T_numtype>());                                        \
-}                                                                     
-
-BZ_DECL_ARRAY_FULL_REDUCE(sum,      ReduceSum)
-BZ_DECL_ARRAY_FULL_REDUCE(mean,     ReduceMean)
-BZ_DECL_ARRAY_FULL_REDUCE(min,      ReduceMin)
-BZ_DECL_ARRAY_FULL_REDUCE(max,      ReduceMax)
-BZ_DECL_ARRAY_FULL_REDUCE(product,  ReduceProduct)
-BZ_DECL_ARRAY_FULL_REDUCE(count,    ReduceCount)
-BZ_DECL_ARRAY_FULL_REDUCE(any,      ReduceAny)
-BZ_DECL_ARRAY_FULL_REDUCE(all,      ReduceAll)
-BZ_DECL_ARRAY_FULL_REDUCE(first,    ReduceFirst)
-BZ_DECL_ARRAY_FULL_REDUCE(last,     ReduceLast)
-
-// Special versions of complete reductions: minIndex and
-// maxIndex
-
-#define BZ_DECL_ARRAY_FULL_REDUCE_INDEXVECTOR(fn,reduction)             \
-template<class T_expr>                                                  \
-inline                                                                  \
-_bz_typename reduction<_bz_typename T_expr::T_numtype,                  \
-    T_expr::rank>::T_resulttype                                         \
-fn(_bz_ArrayExpr<T_expr> expr)                                          \
-{                                                                       \
-    return _bz_reduceWithIndexVectorTraversal(expr,                     \
-        reduction<_bz_typename T_expr::T_numtype, T_expr::rank>());     \
-}                                                                       \
-                                                                        \
-template<class T_numtype, int N_rank>                                   \
-inline                                                                  \
-_bz_typename reduction<T_numtype,N_rank>::T_resulttype                  \
-fn(const Array<T_numtype, N_rank>& array)                               \
-{                                                                       \
-    return _bz_reduceWithIndexVectorTraversal( array.beginFast(),       \
-        reduction<T_numtype,N_rank>());                                 \
-}
-
-BZ_DECL_ARRAY_FULL_REDUCE_INDEXVECTOR(minIndex, ReduceMinIndexVector)
-BZ_DECL_ARRAY_FULL_REDUCE_INDEXVECTOR(maxIndex, ReduceMaxIndexVector)
-
-BZ_NAMESPACE_END
-
-#include <blitz/array/reduce.cc>
-
-#endif // BZ_ARRAYREDUCE_H
diff --git a/weave/blitz-20001213/blitz/array/resize.cc b/weave/blitz-20001213/blitz/array/resize.cc
deleted file mode 100644
index 2d3ef33..0000000
--- a/weave/blitz-20001213/blitz/array/resize.cc
+++ /dev/null
@@ -1,457 +0,0 @@
-#ifndef BZ_ARRAYRESIZE_CC
-#define BZ_ARRAYRESIZE_CC
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/resize.cc> must be included via <blitz/array.h>
-#endif
-
-#include <blitz/minmax.h>
-
-BZ_NAMESPACE(blitz)
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int length0)
-{
-    BZPRECONDITION(length0 > 0);
-    BZPRECONDITION(N_rank == 1);
-
-    if (length0 != length_[firstRank])
-    {
-        length_[firstRank] = length0;
-        setupStorage(0);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0));
-    BZPRECONDITION(N_rank == 2);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        setupStorage(1);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1,
-    int extent2)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0) && (extent2 > 0));
-    BZPRECONDITION(N_rank == 3);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1])
-        || (extent2 != length_[2]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        length_[2] = extent2;
-        setupStorage(2);
-    }
-}
-
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1,
-    int extent2, int extent3)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0) && (extent2 > 0)
-        && (extent3 > 0));
-    BZPRECONDITION(N_rank == 4);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1])
-        || (extent2 != length_[2]) || (extent3 != length_[3]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        length_[2] = extent2;
-        length_[3] = extent3;
-        setupStorage(3);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1,
-    int extent2, int extent3, int extent4)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0) && (extent2 > 0)
-        && (extent3 > 0) && (extent4 > 0));
-    BZPRECONDITION(N_rank == 5);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1])
-        || (extent2 != length_[2]) || (extent3 != length_[3])
-        || (extent4 != length_[4]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        length_[2] = extent2;
-        length_[3] = extent3;
-        length_[4] = extent4;
-        setupStorage(4);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1,
-    int extent2, int extent3, int extent4, int extent5)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0) && (extent2 > 0)
-        && (extent3 > 0) && (extent4 > 0) && (extent5 > 0));
-    BZPRECONDITION(N_rank == 6);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1])
-        || (extent2 != length_[2]) || (extent3 != length_[3])
-        || (extent4 != length_[4]) || (extent5 != length_[5]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        length_[2] = extent2;
-        length_[3] = extent3;
-        length_[4] = extent4;
-        length_[5] = extent5;
-        setupStorage(5);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1,
-    int extent2, int extent3, int extent4, int extent5,
-    int extent6)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0) && (extent2 > 0)
-        && (extent3 > 0) && (extent4 > 0) && (extent5 > 0)
-        && (extent6 > 0));
-    BZPRECONDITION(N_rank == 7);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1])
-        || (extent2 != length_[2]) || (extent3 != length_[3])
-        || (extent4 != length_[4]) || (extent5 != length_[5])
-        || (extent6 != length_[6]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        length_[2] = extent2;
-        length_[3] = extent3;
-        length_[4] = extent4;
-        length_[5] = extent5;
-        length_[6] = extent6;
-        setupStorage(6);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1,
-    int extent2, int extent3, int extent4, int extent5,
-    int extent6, int extent7)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0) && (extent2 > 0)
-        && (extent3 > 0) && (extent4 > 0) && (extent5 > 0)
-        && (extent6 > 0) && (extent7 > 0));
-    BZPRECONDITION(N_rank == 8);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1])
-        || (extent2 != length_[2]) || (extent3 != length_[3])
-        || (extent4 != length_[4]) || (extent5 != length_[5])
-        || (extent6 != length_[6]) || (extent7 != length_[7]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        length_[2] = extent2;
-        length_[3] = extent3;
-        length_[4] = extent4;
-        length_[5] = extent5;
-        length_[6] = extent6;
-        length_[7] = extent7;
-        setupStorage(7);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1,
-    int extent2, int extent3, int extent4, int extent5,
-    int extent6, int extent7, int extent8)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0) && (extent2 > 0)
-        && (extent3 > 0) && (extent4 > 0) && (extent5 > 0)
-        && (extent6 > 0) && (extent7 > 0) && (extent8 > 0));
-    BZPRECONDITION(N_rank == 9);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1])
-        || (extent2 != length_[2]) || (extent3 != length_[3])
-        || (extent4 != length_[4]) || (extent5 != length_[5])
-        || (extent6 != length_[6]) || (extent7 != length_[7])
-        || (extent8 != length_[8]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        length_[2] = extent2;
-        length_[3] = extent3;
-        length_[4] = extent4;
-        length_[5] = extent5;
-        length_[6] = extent6;
-        length_[7] = extent7;
-        length_[8] = extent8;
-        setupStorage(8);
-    }
-}
-
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1,
-    int extent2, int extent3, int extent4, int extent5,
-    int extent6, int extent7, int extent8, int extent9)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0) && (extent2 > 0)
-        && (extent3 > 0) && (extent4 > 0) && (extent5 > 0)
-        && (extent6 > 0) && (extent7 > 0) && (extent8 > 0)
-        && (extent9 > 0));
-    BZPRECONDITION(N_rank == 10);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1])
-        || (extent2 != length_[2]) || (extent3 != length_[3])
-        || (extent4 != length_[4]) || (extent5 != length_[5])
-        || (extent6 != length_[6]) || (extent7 != length_[7])
-        || (extent8 != length_[8]) || (extent9 != length_[9]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        length_[2] = extent2;
-        length_[3] = extent3;
-        length_[4] = extent4;
-        length_[5] = extent5;
-        length_[6] = extent6;
-        length_[7] = extent7;
-        length_[8] = extent8;
-        length_[9] = extent9;
-        setupStorage(9);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(int extent0, int extent1,
-    int extent2, int extent3, int extent4, int extent5,
-    int extent6, int extent7, int extent8, int extent9,
-    int extent10)
-{
-    BZPRECONDITION((extent0 > 0) && (extent1 > 0) && (extent2 > 0)
-        && (extent3 > 0) && (extent4 > 0) && (extent5 > 0)
-        && (extent6 > 0) && (extent7 > 0) && (extent8 > 0)
-        && (extent9 > 0) && (extent10 > 0));
-    BZPRECONDITION(N_rank == 11);
-
-    if ((extent0 != length_[0]) || (extent1 != length_[1])
-        || (extent2 != length_[2]) || (extent3 != length_[3])
-        || (extent4 != length_[4]) || (extent5 != length_[5])
-        || (extent6 != length_[6]) || (extent7 != length_[7])
-        || (extent8 != length_[8]) || (extent9 != length_[9])
-        || (extent10 != length_[10]))
-    {
-        length_[0] = extent0;
-        length_[1] = extent1;
-        length_[2] = extent2;
-        length_[3] = extent3;
-        length_[4] = extent4;
-        length_[5] = extent5;
-        length_[6] = extent6;
-        length_[7] = extent7;
-        length_[8] = extent8;
-        length_[9] = extent9;
-        length_[10] = extent10;
-        setupStorage(10);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resizeAndPreserve(int length0)
-{
-    BZPRECONDITION(length0 > 0);
-    BZPRECONDITION(N_rank == 1);
-
-    if (length0 != length_[firstRank])
-    {
-#if defined(__KCC) || defined(__DECCXX)
-        // NEEDS_WORK: have to discard the base() parameter for EDG,
-        // because it gives the following bizarre error:
-
-/*
- * "blitz/tinyvec.h", line 421: error: the size of an array must be greater
- *         than zero
- *     T_numtype data_[N_length];
- *                     ^
- *         detected during:
- *           instantiation of class "blitz::TinyVector<int, 0>" at line 273 of
- *                     "./../blitz/array/resize.cc"
- *           instantiation of
- *                     "void blitz::Array<int, 1>::resizeAndPreserve(int)" 
- */
-        T_array B(length0, storage_);
-#else
-        T_array B(base(), BZ_BLITZ_SCOPE(shape)(length0), storage_);  // line 273
-#endif
-        if (numElements())
-        {
-            Range overlap0 = Range(fromStart, minmax::min(B.ubound(0), 
-              ubound(0)));
-            B(overlap0) = (*this)(overlap0);
-        }
-        reference(B);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resizeAndPreserve(int length0, int length1)
-{
-    BZPRECONDITION((length0 > 0) && (length1 > 0));
-    BZPRECONDITION(N_rank == 2);
-
-    if ((length0 != length_[0]) || (length1 != length_[1]))
-    {
-        T_array B(base(), BZ_BLITZ_SCOPE(shape)(length0, length1), storage_);
-
-        if (numElements())
-        {
-            Range overlap0 = Range(fromStart, minmax::min(B.ubound(0), 
-                ubound(0)));
-            Range overlap1 = Range(fromStart, minmax::min(B.ubound(1), 
-                ubound(1)));
-            B(overlap0, overlap1) = (*this)(overlap0, overlap1);
-        }
-        reference(B);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resizeAndPreserve(int length0, int length1,
-    int length2)
-{
-    BZPRECONDITION((length0 > 0) && (length1 > 0) && (length2 > 0));
-    BZPRECONDITION(N_rank == 3);
-
-    if ((length0 != length_[0]) || (length1 != length_[1])
-        || (length2 != length_[2]))
-    {
-        T_array B(base(), BZ_BLITZ_SCOPE(shape)(length0, length1, length2), 
-            storage_);
-        if (numElements())
-        {
-            Range overlap0 = Range(fromStart, minmax::min(B.ubound(0), 
-                ubound(0)));
-            Range overlap1 = Range(fromStart, minmax::min(B.ubound(1), 
-                ubound(1)));
-            Range overlap2 = Range(fromStart, minmax::min(B.ubound(2), 
-                ubound(2)));
-            B(overlap0, overlap1, overlap2) = (*this)(overlap0, overlap1, 
-                overlap2);
-        }
-        reference(B);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resizeAndPreserve(int length0, int length1,
-    int length2, int length3)
-{
-    BZPRECONDITION((length0 > 0) && (length1 > 0) && (length2 > 0)
-        && (length3 > 0));
-    BZPRECONDITION(N_rank == 4);
-
-    if ((length0 != length_[0]) || (length1 != length_[1])
-        || (length2 != length_[2]) || (length3 != length_[3]))
-    {
-        T_array B(base(), BZ_BLITZ_SCOPE(shape)(length0, length1,
-            length2, length3), storage_);
-
-        if (numElements())
-        {
-            Range overlap0 = Range(fromStart, minmax::min(B.ubound(0), ubound(0)));
-            Range overlap1 = Range(fromStart, minmax::min(B.ubound(1), ubound(1)));
-            Range overlap2 = Range(fromStart, minmax::min(B.ubound(2), ubound(2)));
-            Range overlap3 = Range(fromStart, minmax::min(B.ubound(3), ubound(3)));
-            B(overlap0, overlap1, overlap2, overlap3) = (*this)(overlap0,
-                overlap1, overlap2, overlap3);
-        }
-        reference(B);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resizeAndPreserve(int length0, int length1,
-    int length2, int length3, int length4)
-{
-    BZPRECONDITION((length0 > 0) && (length1 > 0) && (length2 > 0)
-        && (length3 > 0) && (length4 > 0));
-    BZPRECONDITION(N_rank == 5);
-
-    if ((length0 != length_[0]) || (length1 != length_[1])
-        || (length2 != length_[2]) || (length3 != length_[3])
-        || (length4 != length_[4]))
-    {
-        T_array B(base(), BZ_BLITZ_SCOPE(shape)(length0, length1, 
-            length2, length3, length4), storage_);
-
-        if (numElements())
-        {
-            Range overlap0 = Range(fromStart, minmax::min(B.ubound(0), ubound(0)));
-            Range overlap1 = Range(fromStart, minmax::min(B.ubound(1), ubound(1)));
-            Range overlap2 = Range(fromStart, minmax::min(B.ubound(2), ubound(2)));
-            Range overlap3 = Range(fromStart, minmax::min(B.ubound(3), ubound(3)));
-            Range overlap4 = Range(fromStart, minmax::min(B.ubound(4), ubound(4)));
-            B(overlap0, overlap1, overlap2, overlap3, overlap4) = (*this)
-                (overlap0, overlap1, overlap2, overlap3, overlap4);
-        }
-        reference(B);
-    }
-}
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resizeAndPreserve(int length0, int length1,
-    int length2, int length3, int length4, int length5)
-{
-    BZPRECONDITION((length0 > 0) && (length1 > 0) && (length2 > 0)
-        && (length3 > 0) && (length4 > 0) && (length5 > 0));
-    BZPRECONDITION(N_rank == 6);
-
-    if ((length0 != length_[0]) || (length1 != length_[1])
-        || (length2 != length_[2]) || (length3 != length_[3])
-        || (length4 != length_[4]) || (length5 != length_[5]))
-    {
-        T_array B(base(), BZ_BLITZ_SCOPE(shape)(length0, length1, length2, 
-            length3, length4, length5), storage_);
-
-        if (numElements())
-        {
-            Range overlap0 = Range(fromStart, minmax::min(B.ubound(0), ubound(0)));
-            Range overlap1 = Range(fromStart, minmax::min(B.ubound(1), ubound(1)));
-            Range overlap2 = Range(fromStart, minmax::min(B.ubound(2), ubound(2)));
-            Range overlap3 = Range(fromStart, minmax::min(B.ubound(3), ubound(3)));
-            Range overlap4 = Range(fromStart, minmax::min(B.ubound(4), ubound(4)));
-            Range overlap5 = Range(fromStart, minmax::min(B.ubound(5), ubound(5)));
-            B(overlap0, overlap1, overlap2, overlap3, overlap4, overlap5)
-                = (*this)(overlap0, overlap1, overlap2, overlap3, overlap4,
-                overlap5);
-        }
-        reference(B);
-    }
-}
-
-
-// NEEDS_WORK: resizeAndPreserve for N_rank = 7..11
-
-template<class T_numtype, int N_rank>
-void Array<T_numtype, N_rank>::resize(const TinyVector<int,N_rank>& extent)
-{
-// NEEDS_WORK
-//    BZPRECONDITION(all(extent > 0));
-//    if (any(extent != length_))
-//    {
-        length_ = extent;
-        setupStorage(N_rank);
-//    }
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYRESIZE_CC
diff --git a/weave/blitz-20001213/blitz/array/shape.h b/weave/blitz-20001213/blitz/array/shape.h
deleted file mode 100644
index 96b49ae..0000000
--- a/weave/blitz-20001213/blitz/array/shape.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/***************************************************************************
- * blitz/array/shape.h        
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:14  tveldhui
- * Imported sources
- *
- * Revision 1.1  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- */
-
-#ifndef BZ_ARRAYSHAPE_H
-#define BZ_ARRAYSHAPE_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/shape.h> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * These routines make it easier to create shape parameters on
- * the fly: instead of having to write
- *
- * A.resize(TinyVector<int,4>(8,8,8,12));
- *
- * you can just say
- *
- * A.resize(shape(8,8,8,12));
- *
- */
-inline TinyVector<int,1> shape(int n1)
-{ return TinyVector<int,1>(n1); }
-
-inline TinyVector<int,2> shape(int n1, int n2)
-{ return TinyVector<int,2>(n1,n2); }
-
-inline TinyVector<int,3> shape(int n1, int n2, int n3)
-{ return TinyVector<int,3>(n1,n2,n3); }
-
-inline TinyVector<int,4> shape(int n1, int n2, int n3, int n4)
-{ return TinyVector<int,4>(n1,n2,n3,n4); }
-
-inline TinyVector<int,5> shape(int n1, int n2, int n3, int n4,
-    int n5)
-{ return TinyVector<int,5>(n1,n2,n3,n4,n5); }
-
-inline TinyVector<int,6> shape(int n1, int n2, int n3, int n4,
-    int n5, int n6)
-{ return TinyVector<int,6>(n1,n2,n3,n4,n5,n6); }
-
-inline TinyVector<int,7> shape(int n1, int n2, int n3, int n4,
-    int n5, int n6, int n7)
-{ return TinyVector<int,7>(n1,n2,n3,n4,n5,n6,n7); }
-
-inline TinyVector<int,8> shape(int n1, int n2, int n3, int n4,
-    int n5, int n6, int n7, int n8)
-{ return TinyVector<int,8>(n1,n2,n3,n4,n5,n6,n7,n8); }
-
-inline TinyVector<int,9> shape(int n1, int n2, int n3, int n4,
-    int n5, int n6, int n7, int n8, int n9)
-{ return TinyVector<int,9>(n1,n2,n3,n4,n5,n6,n7,n8,n9); }
-
-inline TinyVector<int,10> shape(int n1, int n2, int n3, int n4,
-    int n5, int n6, int n7, int n8, int n9, int n10)
-{ return TinyVector<int,10>(n1,n2,n3,n4,n5,n6,n7,n8,n9,n10); }
-
-inline TinyVector<int,11> shape(int n1, int n2, int n3, int n4,
-    int n5, int n6, int n7, int n8, int n9, int n10, int n11)
-{ return TinyVector<int,11>(n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11); }
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYSHAPE_H
-
diff --git a/weave/blitz-20001213/blitz/array/slice.h b/weave/blitz-20001213/blitz/array/slice.h
deleted file mode 100644
index 28bb246..0000000
--- a/weave/blitz-20001213/blitz/array/slice.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/***************************************************************************
- * blitz/array/slice.h    Helper classes for slicing arrays
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:14  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_ARRAYSLICE_H
-#define BZ_ARRAYSLICE_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/slice.h> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Forward declaration
-template<class T, int N>
-class Array;
-
-
-
-class nilArraySection { };
-
-template<class T>
-class ArraySectionInfo {
-public:
-    enum { isValidType = 0, rank = 0, isPick = 0 };
-};
-
-template<>
-class ArraySectionInfo<Range> {
-public:
-    enum { isValidType = 1, rank = 1, isPick = 0 };
-};
-
-template<>
-class ArraySectionInfo<int> {
-public:
-    enum { isValidType = 1, rank = 0, isPick = 0 };
-};
-
-template<>
-class ArraySectionInfo<nilArraySection> {
-public:
-    enum { isValidType = 1, rank = 0, isPick = 0 };
-};
-
-template<class T_numtype, class T1, class T2 = nilArraySection, 
-    class T3 = nilArraySection, class T4 = nilArraySection, 
-    class T5 = nilArraySection, class T6 = nilArraySection, 
-    class T7 = nilArraySection, class T8 = nilArraySection, 
-    class T9 = nilArraySection, class T10 = nilArraySection, 
-    class T11 = nilArraySection>
-class SliceInfo {
-public:
-    enum { 
-        numValidTypes = ArraySectionInfo<T1>::isValidType
-                      + ArraySectionInfo<T2>::isValidType
-                      + ArraySectionInfo<T3>::isValidType
-                      + ArraySectionInfo<T4>::isValidType
-                      + ArraySectionInfo<T5>::isValidType
-                      + ArraySectionInfo<T6>::isValidType
-                      + ArraySectionInfo<T7>::isValidType
-                      + ArraySectionInfo<T8>::isValidType
-                      + ArraySectionInfo<T9>::isValidType
-                      + ArraySectionInfo<T10>::isValidType
-                      + ArraySectionInfo<T11>::isValidType,
-
-        rank          = ArraySectionInfo<T1>::rank
-                      + ArraySectionInfo<T2>::rank
-                      + ArraySectionInfo<T3>::rank
-                      + ArraySectionInfo<T4>::rank
-                      + ArraySectionInfo<T5>::rank
-                      + ArraySectionInfo<T6>::rank
-                      + ArraySectionInfo<T7>::rank
-                      + ArraySectionInfo<T8>::rank
-                      + ArraySectionInfo<T9>::rank
-                      + ArraySectionInfo<T10>::rank
-                      + ArraySectionInfo<T11>::rank,
-
-        isPick        = ArraySectionInfo<T1>::isPick
-                      + ArraySectionInfo<T2>::isPick
-                      + ArraySectionInfo<T3>::isPick
-                      + ArraySectionInfo<T4>::isPick
-                      + ArraySectionInfo<T5>::isPick
-                      + ArraySectionInfo<T6>::isPick
-                      + ArraySectionInfo<T7>::isPick
-                      + ArraySectionInfo<T8>::isPick
-                      + ArraySectionInfo<T9>::isPick
-                      + ArraySectionInfo<T10>::isPick
-                      + ArraySectionInfo<T11>::isPick
-        };
-
-    typedef Array<T_numtype,numValidTypes> T_array;
-    typedef Array<T_numtype,rank> T_slice;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYSLICE_H
diff --git a/weave/blitz-20001213/blitz/array/slicing.cc b/weave/blitz-20001213/blitz/array/slicing.cc
deleted file mode 100644
index e5c3ae6..0000000
--- a/weave/blitz-20001213/blitz/array/slicing.cc
+++ /dev/null
@@ -1,325 +0,0 @@
-#ifndef BZ_ARRAYSLICING_CC
-#define BZ_ARRAYSLICING_CC
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/slicing.cc> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * These routines make the array a view of a portion of another array.
- * They all work by first referencing the other array, and then slicing.
- */
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, const RectDomain<N_rank>& subdomain)
-{
-    reference(array);
-    for (int i=0; i < N_rank; ++i)
-        slice(i, subdomain[i]);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0)
-{
-    reference(array);
-    slice(0, r0);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-    slice(2, r2);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-    slice(2, r2);
-    slice(3, r3);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3,
-    Range r4)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-    slice(2, r2);
-    slice(3, r3);
-    slice(4, r4);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3,
-    Range r4, Range r5)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-    slice(2, r2);
-    slice(3, r3);
-    slice(4, r4);
-    slice(5, r5);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3,
-    Range r4, Range r5, Range r6)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-    slice(2, r2);
-    slice(3, r3);
-    slice(4, r4);
-    slice(5, r5);
-    slice(6, r6);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3,
-    Range r4, Range r5, Range r6, Range r7)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-    slice(2, r2);
-    slice(3, r3);
-    slice(4, r4);
-    slice(5, r5);
-    slice(6, r6);
-    slice(7, r7);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3,
-    Range r4, Range r5, Range r6, Range r7, Range r8)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-    slice(2, r2);
-    slice(3, r3);
-    slice(4, r4);
-    slice(5, r5);
-    slice(6, r6);
-    slice(7, r7);
-    slice(8, r8);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3,
-    Range r4, Range r5, Range r6, Range r7, Range r8, Range r9)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-    slice(2, r2);
-    slice(3, r3);
-    slice(4, r4);
-    slice(5, r5);
-    slice(6, r6);
-    slice(7, r7);
-    slice(8, r8);
-    slice(9, r9);
-}
-
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::constructSubarray(
-    Array<T_numtype, N_rank>& array, Range r0, Range r1, Range r2, Range r3,
-    Range r4, Range r5, Range r6, Range r7, Range r8, Range r9, Range r10)
-{
-    reference(array);
-    slice(0, r0);
-    slice(1, r1);
-    slice(2, r2);
-    slice(3, r3);
-    slice(4, r4);
-    slice(5, r5);
-    slice(6, r6);
-    slice(7, r7);
-    slice(8, r8);
-    slice(9, r9);
-    slice(10, r10);
-}
-
-/*
- * This member template is used to implement operator() with any
- * combination of int and Range parameters.  There's room for up
- * to 11 parameters, but any unused parameters have no effect.
- */
-template<class P_numtype, int N_rank> template<int N_rank2, class R0,
-    class R1, class R2, class R3, class R4, class R5, class R6, class R7,
-    class R8, class R9, class R10>
-void Array<P_numtype, N_rank>::constructSlice(Array<T_numtype, N_rank2>& array,
-    R0 r0, R1 r1, R2 r2, R3 r3, R4 r4, R5 r5, R6 r6, R7 r7, R8 r8, R9 r9,
-    R10 r10)
-{
-    MemoryBlockReference<P_numtype>::changeBlock(array, array.zeroOffset());
-    data_ = array.dataZero();
-
-    int setRank = 0;
-
-    TinyVector<int, N_rank2> rankMap;
-
-    slice(setRank, r0, array, rankMap, 0);
-    slice(setRank, r1, array, rankMap, 1);
-    slice(setRank, r2, array, rankMap, 2);
-    slice(setRank, r3, array, rankMap, 3);
-    slice(setRank, r4, array, rankMap, 4);
-    slice(setRank, r5, array, rankMap, 5);
-    slice(setRank, r6, array, rankMap, 6);
-    slice(setRank, r7, array, rankMap, 7);
-    slice(setRank, r8, array, rankMap, 8);
-    slice(setRank, r9, array, rankMap, 9);
-    slice(setRank, r10, array, rankMap, 10);
-
-    // Redo the ordering_ array to account for dimensions which
-    // have been sliced away.
-    int j = 0;
-    for (int i=0; i < N_rank2; ++i)
-    {
-        if (rankMap[array.ordering(i)] != -1)
-            storage_.setOrdering(j++, rankMap[array.ordering(i)]);
-    }
-
-    calculateZeroOffset();
-}
-
-/*
- * This member template is also used in the implementation of
- * operator() with any combination of int and Rank parameters.
- * It's called by constructSlice(), above.  This version handles
- * Range parameters.
- */
-template<class T_numtype, int N_rank> template<int N_rank2>
-void Array<T_numtype, N_rank>::slice(int& setRank, Range r,
-    Array<T_numtype,N_rank2>& array, TinyVector<int,N_rank2>& rankMap,
-    int sourceRank)
-{
-    // NEEDS WORK: ordering will change completely when some ranks
-    // are deleted.
-
-#ifdef BZ_DEBUG_SLICE
-cout << "slice(" << setRank << ", [" << r.first(array.lbound(sourceRank))
-     << ", " << r.last(array.ubound(sourceRank)) << "], Array<T,"
-     << N_rank2 << ">, " << sourceRank << ")" << endl;
-#endif
-
-    rankMap[sourceRank] = setRank;
-    length_[setRank] = array.length(sourceRank);
-    stride_[setRank] = array.stride(sourceRank);
-    storage_.setAscendingFlag(setRank, array.isRankStoredAscending(sourceRank));
-    storage_.setBase(setRank, array.base(sourceRank));
-    slice(setRank, r);
-    ++setRank;
-}
-
-/*
- * This member template is also used in the implementation of
- * operator() with any combination of int and Rank parameters.
- * It's called by constructSlice(), above.  This version handles
- * int parameters, which reduce the dimensionality by one.
- */
-template<class T_numtype, int N_rank> template<int N_rank2>
-void Array<T_numtype, N_rank>::slice(int& setRank, int i,
-    Array<T_numtype,N_rank2>& array, TinyVector<int,N_rank2>& rankMap,
-    int sourceRank)
-{
-#ifdef BZ_DEBUG_SLICE
-    cout << "slice(" << setRank << ", " << i
-         << ", Array<T," << N_rank2 << ">, " << sourceRank << ")" << endl;
-    cout << "Offset by " << (i * array.stride(sourceRank))
-         << endl;
-#endif
-    BZPRECHECK(array.isInRangeForDim(i, sourceRank),
-        "Slice is out of range for array: index=" << i << " rank=" << sourceRank
-         << endl << "Possible range for index: [" << array.lbound(sourceRank)
-         << ", " << array.ubound(sourceRank) << "]");
-
-    rankMap[sourceRank] = -1;
-    data_ += i * array.stride(sourceRank);
-#ifdef BZ_DEBUG_SLICE
-    cout << "data_ = " << data_ << endl;
-#endif
-}
-
-/*
- * After calling slice(int rank, Range r), the array refers only to the
- * Range r of the original array.
- * e.g. Array<int,1> x(100);
- *      x.slice(firstRank, Range(25,50));
- *      x = 0;       // Sets elements 25..50 of the original array to 0
- */
-template<class P_numtype, int N_rank>
-void Array<P_numtype, N_rank>::slice(int rank, Range r)
-{
-    BZPRECONDITION((rank >= 0) && (rank < N_rank));
-
-    int first = r.first(lbound(rank));
-    int last  = r.last(ubound(rank));
-    int stride = r.stride();
-
-#ifdef BZ_DEBUG_SLICE
-cout << "slice(" << rank << ", Range):" << endl
-     << "first = " << first << " last = " << last << "stride = " << stride
-     << endl << "length_[rank] = " << length_[rank] << endl;
-#endif
-
-    BZPRECHECK(
-        ((first <= last) && (stride > 0)
-         || (first >= last) && (stride < 0))
-        && (unsigned(first - base(rank)) < length_[rank])
-        && (unsigned(last - base(rank)) < length_[rank]),
-        "Bad array slice: Range(" << first << ", " << last << ", "
-        << stride << ").  Array is Range(" << lbound(rank) << ", "
-        << ubound(rank) << ")");
-
-    // Will the storage be non-contiguous?
-    // (1) Slice in the minor dimension and the range does not span
-    //     the entire index interval (NB: non-unit strides are possible)
-    // (2) Slice in a middle dimension and the range is not Range::all()
-
-    length_[rank] = (last - first) / stride + 1;
-
-    // TV 20000312: added second term here, for testsuite/Josef-Wagenhuber
-    int offset = -base(rank) * stride_[rank] * stride
-                 + first * stride_[rank];
-    // (first - base(rank)) * stride_[rank] 
-    data_ += offset;
-    zeroOffset_ -= offset;
-
-    stride_[rank] *= stride;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYSLICING_CC
diff --git a/weave/blitz-20001213/blitz/array/stencil-et.h b/weave/blitz-20001213/blitz/array/stencil-et.h
deleted file mode 100644
index a16055d..0000000
--- a/weave/blitz-20001213/blitz/array/stencil-et.h
+++ /dev/null
@@ -1,272 +0,0 @@
-#ifndef BZ_ARRAY_STENCIL_ET_H
-#define BZ_ARRAY_STENCIL_ET_H
-
-BZ_NAMESPACE(blitz)
-
-template<typename T_ArrayNumtype, int N_rank, typename T_result>
-class StencilExpr 
-{
-public:
-    typedef T_result T_numtype;
-    typedef Array<T_ArrayNumtype,N_rank> T_array;
-    typedef const T_array& T_ctorArg1;
-    typedef int T_ctorArg2;
-
-    enum { numArrayOperands = 1, numIndexPlaceholders = 0,
-        rank = N_rank };
-
-    StencilExpr(const T_array& array)
-        : iter_(array)
-    { }
-
-    ~StencilExpr()
-    { }
-
-    // operator* must be declared by subclass
-  
-    int ascending(int rank)
-    { return iter_.ascending(rank); }
- 
-    int ordering(int rank)
-    { return iter_.ordering(rank); }
- 
-    int lbound(int rank)
-    { return iter_.lbound(rank); }
-
-    int ubound(int rank)
-    { return iter_.ubound(rank); }
-
-    void push(int position)
-    { iter_.push(position); }
-
-    void pop(int position)
-    { iter_.pop(position); }
-
-    void advance()
-    { iter_.advance(); }
-
-    void advance(int n)
-    { iter_.advance(n); }
-
-    void loadStride(int rank)
-    { iter_.loadStride(rank); }
-
-    _bz_bool isUnitStride(int rank) const
-    { return iter_.isUnitStride(rank); }
-
-    void advanceUnitStride()
-    { iter_.advanceUnitStride(); }
-
-    _bz_bool canCollapse(int outerLoopRank, int innerLoopRank) const
-    {
-        // BZ_DEBUG_MESSAGE("_bz_ArrayExpr<>::canCollapse()");
-        return iter_.canCollapse(outerLoopRank, innerLoopRank);
-    }
-
-    // T_numtype operator[](int i)   -- don't know how to do that.
-
-    // T_numtype fastRead(int i)     -- ditto
-
-    int suggestStride(int rank) const
-    { return iter_.suggestStride(rank); }
-
-    _bz_bool isStride(int rank, int stride) const
-    { return iter_.isStride(rank,stride); }
-
-    void prettyPrint(string& str) const
-    {
-        str += "(stencil)";    // lame, needs work
-    }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    {   str += "(stencil)"; }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape& shape)
-    { return iter_.shapeCheck(shape); }
-
-    void moveTo(const TinyVector<int,N_rank>& i)
-    {
-        iter_.moveTo(i);
-    }
-
-protected:
-    FastArrayIterator<T_ArrayNumtype,N_rank> iter_;
-};
-
-#define BZ_ET_STENCIL(name,result) \
-template<class P_numtype, int N_rank> \
-class name ## _et : public StencilExpr<P_numtype,N_rank,result>, \
-  public ETBase<name ## _et<P_numtype,N_rank> > \
- { \
-public: \
-    name ## _et(const Array<T_numtype,N_rank>& A) \
-        : StencilExpr<T_numtype,N_rank,result>(A) \
-    { } \
-    result operator*() \
-    { return name(iter_); } \
-    result operator()(const TinyVector<int,N_rank>& a) \
-    { iter_.moveTo(a); return name(iter_); } \
-    result fastRead(int i) \
-    { \
-      const T_numtype* tmp = iter_.data(); \
-      iter_._bz_setData(tmp + i); \
-      T_numtype r = name(iter_); \
-      iter_._bz_setData(tmp); \
-      return r; \
-    } \
-}; \
-template<class T_numtype, int N_rank> \
-inline _bz_ArrayExpr<name ## _et<T_numtype, N_rank> > \
-name(Array<T_numtype,N_rank>& A) \
-{ \
-    return _bz_ArrayExpr<name ## _et<T_numtype, N_rank> >(A); \
-}
-
-#define BZ_ET_STENCILV(name,rank) \
-template<class P_numtype, int N_rank> \
-class name ## _et : public StencilExpr<P_numtype,N_rank, \
-    TinyVector<P_numtype,rank> >, \
-  public ETBase<name ## _et<P_numtype,N_rank> > \
- { \
-public: \
-    typedef TinyVector<T_numtype,rank> result; \
-    name ## _et(const Array<T_numtype,N_rank>& A) \
-        : StencilExpr<T_numtype,N_rank,result>(A) \
-    { } \
-    result operator*() \
-    { return name(iter_); } \
-    result operator()(const TinyVector<int,N_rank>& a) \
-    { iter_.moveTo(a); return name(iter_); } \
-    result fastRead(int i) \
-    { \
-      const T_numtype* tmp = iter_.data(); \
-      iter_._bz_setData(tmp + i); \
-      T_numtype r = name(iter_); \
-      iter_._bz_setData(tmp); \
-      return r; \
-    } \
-}; \
-template<class T_numtype, int N_rank> \
-inline _bz_ArrayExpr<name ## _et<T_numtype, N_rank> > \
-name(Array<T_numtype,N_rank>& A) \
-{ \
-    return _bz_ArrayExpr< name ## _et<T_numtype, N_rank> >(A); \
-}
-
-#define BZ_ET_STENCIL_DIFF(name) \
-template<class P_numtype, int N_rank> \
-class name ## _et : public StencilExpr<P_numtype,N_rank,P_numtype>, \
-  public ETBase<name ## _et<P_numtype,N_rank> > \
- { \
-public: \
-    name ## _et(const Array<T_numtype,N_rank>& A, int dim) \
-        : StencilExpr<T_numtype,N_rank,P_numtype>(A), dim_(dim) \
-    { } \
-    T_numtype operator*() \
-    { return name(iter_); } \
-    T_numtype operator()(const TinyVector<int,N_rank>& a) \
-    { iter_.moveTo(a); return name(iter_,dim_); } \
-    T_numtype fastRead(int i) \
-    { \
-      const T_numtype* tmp = iter_.data(); \
-      iter_._bz_setData(tmp + i); \
-      T_numtype r = name(iter_,dim_); \
-      iter_._bz_setData(tmp); \
-      return r; \
-    } \
-private: \
-    int dim_; \
-}; \
-template<class T_numtype, int N_rank> \
-inline _bz_ArrayExpr<name ## _et<T_numtype, N_rank> > \
-name(Array<T_numtype,N_rank>& A, int dim) \
-{ \
-    return _bz_ArrayExpr<name ## _et<T_numtype, N_rank> >(A,dim); \
-}
-
-
-BZ_ET_STENCIL(Laplacian2D, P_numtype)
-BZ_ET_STENCIL(Laplacian3D, P_numtype)
-BZ_ET_STENCIL(Laplacian2D4, P_numtype)
-BZ_ET_STENCIL(Laplacian2D4n, P_numtype)
-BZ_ET_STENCIL(Laplacian3D4, P_numtype)
-BZ_ET_STENCIL(Laplacian3D4n, P_numtype)
-BZ_ET_STENCILV(grad2D, 2)
-BZ_ET_STENCILV(grad2D4, 2)
-BZ_ET_STENCILV(grad3D, 3)
-BZ_ET_STENCILV(grad3D4, 3)
-BZ_ET_STENCILV(grad2Dn, 2)
-BZ_ET_STENCILV(grad2D4n, 2)
-BZ_ET_STENCILV(grad3Dn, 3)
-BZ_ET_STENCILV(grad3D4n, 3)
-BZ_ET_STENCILV(gradSqr2D, 2)
-BZ_ET_STENCILV(gradSqr2D4, 2)
-BZ_ET_STENCILV(gradSqr3D, 3)
-BZ_ET_STENCILV(gradSqr3D4, 3)
-BZ_ET_STENCILV(gradSqr2Dn, 2)
-BZ_ET_STENCILV(gradSqr2D4n, 2)
-BZ_ET_STENCILV(gradSqr3Dn, 3)
-BZ_ET_STENCILV(gradSqr3D4n, 3)
-
-// NEEDS_WORK:
-// Jacobian
-// Curl
-// Div
-// mixed
-
-BZ_ET_STENCIL_DIFF(central12)
-BZ_ET_STENCIL_DIFF(central22)
-BZ_ET_STENCIL_DIFF(central32)
-BZ_ET_STENCIL_DIFF(central42)
-BZ_ET_STENCIL_DIFF(central14)
-BZ_ET_STENCIL_DIFF(central24)
-BZ_ET_STENCIL_DIFF(central34)
-BZ_ET_STENCIL_DIFF(central44)
-BZ_ET_STENCIL_DIFF(central12n)
-BZ_ET_STENCIL_DIFF(central22n)
-BZ_ET_STENCIL_DIFF(central32n)
-BZ_ET_STENCIL_DIFF(central42n)
-BZ_ET_STENCIL_DIFF(central14n)
-BZ_ET_STENCIL_DIFF(central24n)
-BZ_ET_STENCIL_DIFF(central34n)
-BZ_ET_STENCIL_DIFF(central44n)
-
-BZ_ET_STENCIL_DIFF(backward11)
-BZ_ET_STENCIL_DIFF(backward21)
-BZ_ET_STENCIL_DIFF(backward31)
-BZ_ET_STENCIL_DIFF(backward41)
-BZ_ET_STENCIL_DIFF(backward12)
-BZ_ET_STENCIL_DIFF(backward22)
-BZ_ET_STENCIL_DIFF(backward32)
-BZ_ET_STENCIL_DIFF(backward42)
-BZ_ET_STENCIL_DIFF(backward11n)
-BZ_ET_STENCIL_DIFF(backward21n)
-BZ_ET_STENCIL_DIFF(backward31n)
-BZ_ET_STENCIL_DIFF(backward41n)
-BZ_ET_STENCIL_DIFF(backward12n)
-BZ_ET_STENCIL_DIFF(backward22n)
-BZ_ET_STENCIL_DIFF(backward32n)
-BZ_ET_STENCIL_DIFF(backward42n)
-
-BZ_ET_STENCIL_DIFF(forward11)
-BZ_ET_STENCIL_DIFF(forward21)
-BZ_ET_STENCIL_DIFF(forward31)
-BZ_ET_STENCIL_DIFF(forward41)
-BZ_ET_STENCIL_DIFF(forward12)
-BZ_ET_STENCIL_DIFF(forward22)
-BZ_ET_STENCIL_DIFF(forward32)
-BZ_ET_STENCIL_DIFF(forward42)
-BZ_ET_STENCIL_DIFF(forward11n)
-BZ_ET_STENCIL_DIFF(forward21n)
-BZ_ET_STENCIL_DIFF(forward31n)
-BZ_ET_STENCIL_DIFF(forward41n)
-BZ_ET_STENCIL_DIFF(forward12n)
-BZ_ET_STENCIL_DIFF(forward22n)
-BZ_ET_STENCIL_DIFF(forward32n)
-BZ_ET_STENCIL_DIFF(forward42n)
-
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAY_STENCIL_ET_H
diff --git a/weave/blitz-20001213/blitz/array/stencil.cc b/weave/blitz-20001213/blitz/array/stencil.cc
deleted file mode 100644
index 1fc27d5..0000000
--- a/weave/blitz-20001213/blitz/array/stencil.cc
+++ /dev/null
@@ -1,583 +0,0 @@
-#ifndef BZ_ARRAYSTENCIL_CC
-#define BZ_ARRAYSTENCIL_CC
-
-#ifndef BZ_ARRAYSTENCIL_H
- #error <blitz/array/stencil.cc> must be included via <blitz/array/stencil.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// NEEDS_WORK:
-// o Need to allow scalar arguments as well as arrays
-// o Unit stride optimization
-// o Tiling
-// o Pass coordinate vector to stencil, so that where-like constructs
-//   can depend on location
-// o Maybe allow expression templates to be passed as
-//   array parameters?
-
-/*
- * There are a lot of kludges in this code to work around the fact that
- * you can't have default template parameters with function templates.
- * Ideally, one would implement applyStencil(..) as:
- *
- * template<class T_stencil, class T_numtype1, class T_array2,
- *    class T_array3, class T_array4, class T_array5, class T_array6,
- *    class T_array7, class T_array8, class T_array9, class T_array10,
- *    class T_array11>
- * void applyStencil(const T_stencil& stencil, Array<T_numtype1,3>& A,
- *    T_array2& B = _dummyArray, T_array3& C = _dummyArray, ......)
- *
- * and allow for up to (say) 11 arrays to be passed.  But this doesn't
- * appear to be legal C++.  Instead, 11 versions of applyStencil are
- * provided, each one with a different number of array parameters,
- * and these stubs fill in the _dummyArray parameters and invoke
- * applyStencil_imp().
- */
-
-template<int N_rank, class T_numtype1, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10,
-    class T_array11>
-void checkShapes(const Array<T_numtype1,N_rank>& A,
-    const T_array2& B, const T_array3& C, const T_array4& D, 
-    const T_array5& E, const T_array6& F, const T_array7& G, 
-    const T_array8& H, const T_array9& I, const T_array10& J, 
-    const T_array11& K)
-{
-    BZPRECONDITION(areShapesConformable(A.shape(),B.shape())
-        && areShapesConformable(A.shape(),C.shape())
-        && areShapesConformable(A.shape(),D.shape())
-        && areShapesConformable(A.shape(),E.shape())
-        && areShapesConformable(A.shape(),F.shape())
-        && areShapesConformable(A.shape(),G.shape())
-        && areShapesConformable(A.shape(),H.shape())
-        && areShapesConformable(A.shape(),I.shape())
-        && areShapesConformable(A.shape(),J.shape())
-        && areShapesConformable(A.shape(),K.shape()));
-}
-
-template<class T_extent, int N_rank, 
-    class T_stencil, class T_numtype1, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10,
-    class T_array11>
-void calcStencilExtent(T_extent& At, const T_stencil& stencil, 
-    const Array<T_numtype1,N_rank>& A,
-    const T_array2& B, const T_array3& C, const T_array4& D, const T_array5& E, 
-    const T_array6& F, const T_array7& G, const T_array8& H, const T_array9& I, 
-    const T_array10& J, const T_array11& K)
-{
-    // Interrogate the stencil to find out its extent
-    _bz_typename stencilExtent_traits<T_array2>::T_stencilExtent Bt;
-    _bz_typename stencilExtent_traits<T_array3>::T_stencilExtent Ct;
-    _bz_typename stencilExtent_traits<T_array4>::T_stencilExtent Dt;
-    _bz_typename stencilExtent_traits<T_array5>::T_stencilExtent Et;
-    _bz_typename stencilExtent_traits<T_array6>::T_stencilExtent Ft;
-    _bz_typename stencilExtent_traits<T_array7>::T_stencilExtent Gt;
-    _bz_typename stencilExtent_traits<T_array8>::T_stencilExtent Ht;
-    _bz_typename stencilExtent_traits<T_array9>::T_stencilExtent It;
-    _bz_typename stencilExtent_traits<T_array10>::T_stencilExtent Jt;
-    _bz_typename stencilExtent_traits<T_array11>::T_stencilExtent Kt;
-
-    stencil.apply(At, Bt, Ct, Dt, Et, Ft, Gt, Ht, It, Jt, Kt);
-    At.combine(Bt);
-    At.combine(Ct);
-    At.combine(Dt);
-    At.combine(Et);
-    At.combine(Ft);
-    At.combine(Gt);
-    At.combine(Ht);
-    At.combine(It);
-    At.combine(Jt);
-    At.combine(Kt);
-}
-
-template<int N_rank, class T_stencil, class T_numtype1, class T_array2>
-RectDomain<N_rank> interiorDomain(const T_stencil& stencil,
-    const Array<T_numtype1,N_rank>& A,
-    const T_array2& B)
-{
-    RectDomain<N_rank> domain = A.domain();
-
-    // Interrogate the stencil to find out its extent
-    stencilExtent<3, T_numtype1> At;
-    calcStencilExtent(At, stencil, A, B, _dummyArray, _dummyArray, 
-        _dummyArray, _dummyArray, _dummyArray, _dummyArray, _dummyArray, 
-        _dummyArray, _dummyArray);
-
-    // Shrink the domain according to the stencil size
-    TinyVector<int,N_rank> lbound, ubound;
-    lbound = domain.lbound() - At.min();
-    ubound = domain.ubound() - At.max();
-    return RectDomain<N_rank>(lbound,ubound);
-}
-
-template<int hasExtents>
-struct _getStencilExtent {
-template<int N_rank,
-    class T_stencil, class T_numtype1, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10,
-    class T_array11>
-static void getStencilExtent(TinyVector<int,N_rank>& minb,
-    TinyVector<int,N_rank>& maxb,
-    const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-    T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F,
-    T_array7& G, T_array8& H, T_array9& I, T_array10& J, T_array11& K)
-{
-    // Interrogate the stencil to find out its extent
-    stencilExtent<N_rank, T_numtype1> At;
-    calcStencilExtent(At, stencil, A, B, C, D, E, F, G, H, I, J, K);
-    minb = At.min();
-    maxb = At.max();
-}
-};
-
-template<>
-struct _getStencilExtent<1> {
-template<int N_rank,
-    class T_stencil, class T_numtype1, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10,
-    class T_array11>
-static inline void getStencilExtent(TinyVector<int,N_rank>& minb,
-    TinyVector<int,N_rank>& maxb,
-    const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-    T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F,
-    T_array7& G, T_array8& H, T_array9& I, T_array10& J, T_array11& K)
-{
-    stencil.getExtent(minb, maxb);
-}
-};
-
-template<int N_rank,
-    class T_stencil, class T_numtype1, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10,
-    class T_array11>
-inline void getStencilExtent(TinyVector<int,N_rank>& minb,
-    TinyVector<int,N_rank>& maxb,
-    const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-    T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F,
-    T_array7& G, T_array8& H, T_array9& I, T_array10& J, T_array11& K)
-{
-    _getStencilExtent<T_stencil::hasExtent>::getStencilExtent(
-        minb, maxb, stencil, A, B, C, D, E, F, G, H, I, J, K);
-}
-
-/*
- * This version applies a stencil to a set of 3D arrays.  Up to 11 arrays
- * may be used.  Any unused arrays are turned into dummyArray objects.
- * Operations on dummyArray objects are translated into no-ops.
- */
-template<class T_stencil, class T_numtype1, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10,
-    class T_array11>
-void applyStencil_imp(const T_stencil& stencil, Array<T_numtype1,3>& A,
-    T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F,
-    T_array7& G, T_array8& H, T_array9& I, T_array10& J, T_array11& K)
-{
-    checkShapes(A,B,C,D,E,F,G,H,I,J,K);
- 
-    // Determine stencil extent
-    TinyVector<int,3> minb, maxb;
-    getStencilExtent(minb, maxb, stencil, A, B, C, D, E, F, G, H, I, J, K);
-
-    // Now determine the subdomain over which the stencil
-    // can be applied without worrying about overrunning the
-    // boundaries of the array
-    int stencil_lbound0 = minb(0);
-    int stencil_lbound1 = minb(1);
-    int stencil_lbound2 = minb(2);
-
-    int stencil_ubound0 = maxb(0);
-    int stencil_ubound1 = maxb(1);
-    int stencil_ubound2 = maxb(2);
-
-    int lbound0 = minmax::max(A.lbound(0), A.lbound(0) - stencil_lbound0);
-    int lbound1 = minmax::max(A.lbound(1), A.lbound(1) - stencil_lbound1);
-    int lbound2 = minmax::max(A.lbound(2), A.lbound(2) - stencil_lbound2);
-
-    int ubound0 = minmax::min(A.ubound(0), A.ubound(0) - stencil_ubound0);
-    int ubound1 = minmax::min(A.ubound(1), A.ubound(1) - stencil_ubound1);
-    int ubound2 = minmax::min(A.ubound(2), A.ubound(2) - stencil_ubound2);
-
-#if 0
-    cout << "Stencil bounds are:" << endl
-     << lbound0 << '\t' << ubound0 << endl
-     << lbound1 << '\t' << ubound1 << endl
-     << lbound2 << '\t' << ubound2 << endl;
-#endif
-
-    // Now do the actual loop
-    FastArrayIterator<T_numtype1,3> Aiter(A);
-    _bz_typename T_array2::T_iterator Biter(B);
-    _bz_typename T_array3::T_iterator Citer(C);
-    _bz_typename T_array4::T_iterator Diter(D);
-    _bz_typename T_array5::T_iterator Eiter(E);
-    _bz_typename T_array6::T_iterator Fiter(F);
-    _bz_typename T_array7::T_iterator Giter(G);
-    _bz_typename T_array8::T_iterator Hiter(H);
-    _bz_typename T_array9::T_iterator Iiter(I);
-    _bz_typename T_array10::T_iterator Jiter(J);
-    _bz_typename T_array11::T_iterator Kiter(K);
-
-    // Load the strides for the innermost loop
-    Aiter.loadStride(2);
-    Biter.loadStride(2);
-    Citer.loadStride(2);
-    Diter.loadStride(2);
-    Eiter.loadStride(2);
-    Fiter.loadStride(2);
-    Giter.loadStride(2);
-    Hiter.loadStride(2);
-    Iiter.loadStride(2);
-    Jiter.loadStride(2);
-    Kiter.loadStride(2);
-
-    for (int i=lbound0; i <= ubound0; ++i)
-    {
-      for (int j=lbound1; j <= ubound1; ++j)
-      {
-        Aiter.moveTo(i,j,lbound2);
-        Biter.moveTo(i,j,lbound2);
-        Citer.moveTo(i,j,lbound2);
-        Diter.moveTo(i,j,lbound2);
-        Eiter.moveTo(i,j,lbound2);
-        Fiter.moveTo(i,j,lbound2);
-        Giter.moveTo(i,j,lbound2);
-        Hiter.moveTo(i,j,lbound2);
-        Iiter.moveTo(i,j,lbound2);
-        Jiter.moveTo(i,j,lbound2);
-        Kiter.moveTo(i,j,lbound2);
-
-        for (int k=lbound2; k <= ubound2; ++k)
-        {
-            stencil.apply(Aiter, Biter, Citer, Diter, Eiter, Fiter, Giter,
-                Hiter, Iiter, Jiter, Kiter);
-
-            Aiter.advance();
-            Biter.advance();
-            Citer.advance();
-            Diter.advance();
-            Eiter.advance();
-            Fiter.advance();
-            Giter.advance();
-            Hiter.advance();
-            Iiter.advance();
-            Jiter.advance();
-            Kiter.advance();
-        }
-      }
-    }
-}
-
-/*
- * This version applies a stencil to a set of 2D arrays.  Up to 11 arrays
- * may be used.  Any unused arrays are turned into dummyArray objects.
- * Operations on dummyArray objects are translated into no-ops.
- */
-template<class T_stencil, class T_numtype1, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10,
-    class T_array11>
-void applyStencil_imp(const T_stencil& stencil, Array<T_numtype1,2>& A,
-    T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F, 
-    T_array7& G, T_array8& H, T_array9& I, T_array10& J, T_array11& K)
-{
-    checkShapes(A,B,C,D,E,F,G,H,I,J,K);
-
-    // Determine stencil extent
-    TinyVector<int,2> minb, maxb;
-    getStencilExtent(minb, maxb, stencil, A, B, C, D, E, F, G, H, I, J, K);
-
-    // Now determine the subdomain over which the stencil
-    // can be applied without worrying about overrunning the
-    // boundaries of the array
-    int stencil_lbound0 = minb(0);
-    int stencil_lbound1 = minb(1);
-
-    int stencil_ubound0 = maxb(0);
-    int stencil_ubound1 = maxb(1);
-
-    int lbound0 = minmax::max(A.lbound(0), A.lbound(0) - stencil_lbound0);
-    int lbound1 = minmax::max(A.lbound(1), A.lbound(1) - stencil_lbound1);
-
-    int ubound0 = minmax::min(A.ubound(0), A.ubound(0) - stencil_ubound0);
-    int ubound1 = minmax::min(A.ubound(1), A.ubound(1) - stencil_ubound1);
-
-#if 0
-    cout << "Stencil bounds are:" << endl
-     << lbound0 << '\t' << ubound0 << endl
-     << lbound1 << '\t' << ubound1 << endl;
-#endif 
-
-    // Now do the actual loop
-    FastArrayIterator<T_numtype1,2> Aiter(A);
-    _bz_typename T_array2::T_iterator Biter(B);
-    _bz_typename T_array3::T_iterator Citer(C);
-    _bz_typename T_array4::T_iterator Diter(D);
-    _bz_typename T_array5::T_iterator Eiter(E);
-    _bz_typename T_array6::T_iterator Fiter(F);
-    _bz_typename T_array7::T_iterator Giter(G);
-    _bz_typename T_array8::T_iterator Hiter(H);
-    _bz_typename T_array9::T_iterator Iiter(I);
-    _bz_typename T_array10::T_iterator Jiter(J);
-    _bz_typename T_array11::T_iterator Kiter(K);
-
-    // Load the strides for the innermost loop
-    Aiter.loadStride(1);
-    Biter.loadStride(1);
-    Citer.loadStride(1);
-    Diter.loadStride(1);
-    Eiter.loadStride(1);
-    Fiter.loadStride(1);
-    Giter.loadStride(1);
-    Hiter.loadStride(1);
-    Iiter.loadStride(1);
-    Jiter.loadStride(1);
-    Kiter.loadStride(1);
-
-    for (int i=lbound0; i <= ubound0; ++i)
-    {
-        Aiter.moveTo(i,lbound1);
-        Biter.moveTo(i,lbound1);
-        Citer.moveTo(i,lbound1);
-        Diter.moveTo(i,lbound1);
-        Eiter.moveTo(i,lbound1);
-        Fiter.moveTo(i,lbound1);
-        Giter.moveTo(i,lbound1);
-        Hiter.moveTo(i,lbound1);
-        Iiter.moveTo(i,lbound1);
-        Jiter.moveTo(i,lbound1);
-        Kiter.moveTo(i,lbound1);
-
-        for (int k=lbound1; k <= ubound1; ++k)
-        {
-            stencil.apply(Aiter, Biter, Citer, Diter, Eiter, Fiter, Giter,
-                Hiter, Iiter, Jiter, Kiter);
-
-            Aiter.advance();
-            Biter.advance();
-            Citer.advance();
-            Diter.advance();
-            Eiter.advance();
-            Fiter.advance();
-            Giter.advance();
-            Hiter.advance();
-            Iiter.advance();
-            Jiter.advance();
-            Kiter.advance();
-        }
-    }
-}
-
-/*
- * This version applies a stencil to a set of 1D arrays.  Up to 11 arrays
- * may be used.  Any unused arrays are turned into dummyArray objects.
- * Operations on dummyArray objects are translated into no-ops.
- */
-template<class T_stencil, class T_numtype1, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10,
-    class T_array11>
-void applyStencil_imp(const T_stencil& stencil, Array<T_numtype1,1>& A,
-    T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F, 
-    T_array7& G, T_array8& H, T_array9& I, T_array10& J, T_array11& K)
-{
-    checkShapes(A,B,C,D,E,F,G,H,I,J,K);
-
-    // Determine stencil extent
-    TinyVector<int,1> minb, maxb;
-    getStencilExtent(minb, maxb, stencil, A, B, C, D, E, F, G, H, I, J, K);
-
-    // Now determine the subdomain over which the stencil
-    // can be applied without worrying about overrunning the
-    // boundaries of the array
-    int stencil_lbound0 = minb(0);
-    int stencil_ubound0 = maxb(0);
-
-    int lbound0 = minmax::max(A.lbound(0), A.lbound(0) - stencil_lbound0);
-    int ubound0 = minmax::min(A.ubound(0), A.ubound(0) - stencil_ubound0);
-
-#if 0
-    cout << "Stencil bounds are:" << endl
-     << lbound0 << '\t' << ubound0 << endl;
-#endif
-
-    // Now do the actual loop
-    FastArrayIterator<T_numtype1,1> Aiter(A);
-    _bz_typename T_array2::T_iterator Biter(B);
-    _bz_typename T_array3::T_iterator Citer(C);
-    _bz_typename T_array4::T_iterator Diter(D);
-    _bz_typename T_array5::T_iterator Eiter(E);
-    _bz_typename T_array6::T_iterator Fiter(F);
-    _bz_typename T_array7::T_iterator Giter(G);
-    _bz_typename T_array8::T_iterator Hiter(H);
-    _bz_typename T_array9::T_iterator Iiter(I);
-    _bz_typename T_array10::T_iterator Jiter(J);
-    _bz_typename T_array11::T_iterator Kiter(K);
-
-    // Load the strides for the innermost loop
-    Aiter.loadStride(0);
-    Biter.loadStride(0);
-    Citer.loadStride(0);
-    Diter.loadStride(0);
-    Eiter.loadStride(0);
-    Fiter.loadStride(0);
-    Giter.loadStride(0);
-    Hiter.loadStride(0);
-    Iiter.loadStride(0);
-    Jiter.loadStride(0);
-    Kiter.loadStride(0);
-
-    Aiter.moveTo(lbound0);
-    Biter.moveTo(lbound0);
-    Citer.moveTo(lbound0);
-    Diter.moveTo(lbound0);
-    Eiter.moveTo(lbound0);
-    Fiter.moveTo(lbound0);
-    Giter.moveTo(lbound0);
-    Hiter.moveTo(lbound0);
-    Iiter.moveTo(lbound0);
-    Jiter.moveTo(lbound0);
-    Kiter.moveTo(lbound0);
-
-    for (int i=lbound0; i <= ubound0; ++i)
-    {
-        stencil.apply(Aiter, Biter, Citer, Diter, Eiter, Fiter, Giter,
-            Hiter, Iiter, Jiter, Kiter);
-
-        Aiter.advance();
-        Biter.advance();
-        Citer.advance();
-        Diter.advance();
-        Eiter.advance();
-        Fiter.advance();
-        Giter.advance();
-        Hiter.advance();
-        Iiter.advance();
-        Jiter.advance();
-        Kiter.advance();
-    }
-}
-
-/*
- * These 11 versions of applyStencil handle from 1 to 11 array parameters.
- * They pad their argument list with enough dummyArray objects to call
- * applyStencil_imp with 11 array parameters.
- */
-template<class T_stencil, class T_numtype1, int N_rank>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A)
-{
-    applyStencil_imp(stencil, A, _dummyArray, _dummyArray,
-        _dummyArray, _dummyArray, _dummyArray, _dummyArray,
-        _dummyArray, _dummyArray, _dummyArray, _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-    T_array2& B)
-{
-    applyStencil_imp(stencil, A, B, _dummyArray, _dummyArray,
-        _dummyArray, _dummyArray, _dummyArray, _dummyArray,
-        _dummyArray, _dummyArray, _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2,
-    class T_array3>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-    T_array2& B, T_array3& C)
-{
-    applyStencil_imp(stencil, A, B, C, _dummyArray, _dummyArray,
-        _dummyArray, _dummyArray, _dummyArray, _dummyArray, _dummyArray,
-        _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2,
-    class T_array3, class T_array4>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-    T_array2& B, T_array3& C, T_array4& D)
-{
-    applyStencil_imp(stencil, A, B, C, D, _dummyArray, _dummyArray,
-        _dummyArray, _dummyArray, _dummyArray, _dummyArray, _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2,
-    class T_array3, class T_array4, class T_array5>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-   T_array2& B, T_array3& C, T_array4& D, T_array5& E)
-{
-    applyStencil_imp(stencil, A, B, C, D, E, _dummyArray,
-        _dummyArray, _dummyArray, _dummyArray, _dummyArray, _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-   T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F)
-{
-    applyStencil_imp(stencil, A, B, C, D, E, F,
-        _dummyArray, _dummyArray, _dummyArray, _dummyArray, _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-   T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F,
-   T_array7& G)
-{
-    applyStencil_imp(stencil, A, B, C, D, E, F, G,
-        _dummyArray, _dummyArray, _dummyArray, _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-   T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F,
-   T_array7& G, T_array8& H)
-{
-    applyStencil_imp(stencil, A, B, C, D, E, F, G, H,
-        _dummyArray, _dummyArray, _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-   T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F,
-   T_array7& G, T_array8& H, T_array9& I)
-{
-    applyStencil_imp(stencil, A, B, C, D, E, F, G, H, I,
-        _dummyArray, _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-   T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F,
-   T_array7& G, T_array8& H, T_array9& I, T_array10& J)
-{
-    applyStencil_imp(stencil, A, B, C, D, E, F, G, H, I, J,
-        _dummyArray);
-}
-
-template<class T_stencil, class T_numtype1, int N_rank, class T_array2,
-    class T_array3, class T_array4, class T_array5, class T_array6,
-    class T_array7, class T_array8, class T_array9, class T_array10,
-    class T_array11>
-inline void applyStencil(const T_stencil& stencil, Array<T_numtype1,N_rank>& A,
-   T_array2& B, T_array3& C, T_array4& D, T_array5& E, T_array6& F,
-   T_array7& G, T_array8& H, T_array9& I, T_array10& J, T_array11& K)
-{
-    applyStencil_imp(stencil, A, B, C, D, E, F, G, H, I, J, K);
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYSTENCIL_CC
diff --git a/weave/blitz-20001213/blitz/array/stencil.h b/weave/blitz-20001213/blitz/array/stencil.h
deleted file mode 100644
index ab06345..0000000
--- a/weave/blitz-20001213/blitz/array/stencil.h
+++ /dev/null
@@ -1,318 +0,0 @@
-#ifndef BZ_ARRAYSTENCIL_H
-#define BZ_ARRAYSTENCIL_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/stencil.h> must be included via <blitz/array.h>
-#endif
-
-#include <blitz/array/stencilops.h>
-
-BZ_NAMESPACE(blitz)
-
-// NEEDS_WORK: currently stencilExtent returns int(1).  What if the
-// stencil contains calls to math functions, or divisions, etc.?
-// Should at least return a number of the appropriate type.  Probably
-// return a sequence of quasi-random floating point numbers.
-
-/*
- * These macros make it easier for users to declare stencil objects.
- * The syntax is:
- *
- * BZ_DECLARE_STENCILN(stencilname, Array1, Array2, ..., ArrayN)
- *    // stencil operations go here
- * BZ_END_STENCIL
- */
-
-#define BZ_DECLARE_STENCIL2(name,A,B)    \
-  struct name {                          \
-    template<class T1, class T2, class T3, class T4, class T5, class T6, \
-        class T7, class T8, class T9, class T10, class T11>         \
-    static inline void apply(T1& A, T2& B, T3, T4, T5, T6, T7, T8, T9, T10, T11) \
-    {
-
-#define BZ_END_STENCIL_WITH_SHAPE(MINS,MAXS) } \
-    template<int N> \
-    void getExtent(TinyVector<int,N>& minb, TinyVector<int,N>& maxb) const \
-    { \
-        minb = MINS; \
-        maxb = MAXS; \
-    } \
-    enum { hasExtent = 1 }; \
-};
-
-#define BZ_END_STENCIL } enum { hasExtent = 0 }; };
-#define BZ_STENCIL_END BZ_END_STENCIL
-
-#define BZ_DECLARE_STENCIL3(name,A,B,C)         \
-  struct name {                                 \
-    template<class T1, class T2, class T3, class T4, class T5, class T6, \
-        class T7, class T8, class T9, class T10, class T11>      \
-    static inline void apply(T1& A, T2& B, T3& C, T4, T5, T6, T7, T8, T9,  \
-        T10, T11)      \
-    {
-
-#define BZ_DECLARE_STENCIL4(name,A,B,C,D)             \
-  struct name {                                       \
-    template<class T1, class T2, class T3, class T4, class T5, class T6,  \
-        class T7, class T8, class T9, class T10, class T11>  \
-    static inline void apply(T1& A, T2& B, T3& C, T4& D, T5, T6, T7, \
-        T8, T9, T10, T11)     \
-    {
-
-#define BZ_DECLARE_STENCIL5(name,A,B,C,D,E) \
-  struct name { \
-    template<class T1, class T2, class T3, class T4, class T5, class T6, \
-        class T7, class T8, class T9, class T10, class T11> \
-    static inline void apply(T1& A, T2& B, T3& C, T4& D, T5& E, T6, T7, T8, \
-        T9, T10, T11) \
-    {
-
-#define BZ_DECLARE_STENCIL6(name,A,B,C,D,E,F) \
-  struct name { \
-    template<class T1, class T2, class T3, class T4, class T5, class T6, \
-        class T7, class T8, class T9, class T10, class T11> \
-    static inline void apply(T1& A, T2& B, T3& C, T4& D, T5& E, T6& F, \
-        T7, T8, T9, T10, T11) \
-    {
-
-#define BZ_DECLARE_STENCIL7(name,A,B,C,D,E,F,G) \
-  struct name { \
-    template<class T1, class T2, class T3, class T4, \
-      class T5, class T6, class T7, class T8, class T9, class T10, class T11> \
-    static inline void apply(T1& A, T2& B, T3& C, T4& D, T5& E, T6& F, T7& G, \
-        T8, T9, T10, T11) \
-    {
-
-#define BZ_DECLARE_STENCIL8(name,A,B,C,D,E,F,G,H) \
-  struct name { \
-    template<class T1, class T2, class T3, class T4, \
-      class T5, class T6, class T7, class T8, class T9, class T10, class T11> \
-    static inline void apply(T1& A, T2& B, T3& C, T4& D, T5& E, T6& F, T7& G, \
-      T8& H, T9, T10, T11) \
-    {
-
-#define BZ_DECLARE_STENCIL9(name,A,B,C,D,E,F,G,H,I) \
-  struct name { \
-    template<class T1, class T2, class T3, class T4, \
-      class T5, class T6, class T7, class T8, class T9, class T10, \
-      class T11> \
-    static inline void apply(T1& A, T2& B, T3& C, T4& D, T5& E, T6& F, T7& G, \
-      T8& H, T9& I, T10, T11) \
-    {
-
-#define BZ_DECLARE_STENCIL10(name,A,B,C,D,E,F,G,H,I,J) \
-  struct name { \
-    template<class T1, class T2, class T3, class T4, \
-      class T5, class T6, class T7, class T8, class T9, class T10, class T11> \
-    static inline void apply(T1& A, T2& B, T3& C, T4& D, T5& E, T6& F, T7& G, \
-      T8& H, T9& I, T10& J, T11) \
-    {
-
-#define BZ_DECLARE_STENCIL11(name,A,B,C,D,E,F,G,H,I,J,K) \
-  struct name { \
-    template<class T1, class T2, class T3, class T4, \
-      class T5, class T6, class T7, class T8, class T9, class T10, \
-      class T11> \
-    static inline void apply(T1& A, T2& B, T3& C, T4& D, T5& E, T6& F, T7& G, \
-      T8& H, T9& I, T10& J, T11& K) \
-    {
-
-
-
-/*
- * dummyArray is used to provide "dummy" padding parameters to applyStencil(),
- * so that any number of arrays (up to 11) can be given as arguments.
- */
-
-template<class T> class dummy;
-
-struct dummyArray {
-    typedef dummy<double> T_iterator;
-
-    const dummyArray& shape() const { return *this; }
-};
-
-_bz_global dummyArray _dummyArray;
-
-/*
- * This dummy class pretends to be a scalar of type T, or an array iterator
- * of type T, but really does nothing.
- */
-template<class T>
-class dummy {
-public:
-    dummy() { }
-
-    dummy(T value)
-      : value_(value)
-    { }
-
-    dummy(const dummyArray&)
-    { }
-
-    operator T() const { return value_; };
-
-    template<class T2>
-    void operator=(T2) { }
-
-    _bz_typename multicomponent_traits<T>::T_element operator[](int i) const
-    { return value_[i]; }
-
-    void loadStride(int) { }
-    void moveTo(int) { }
-    void moveTo(int,int) { }
-    void moveTo(int,int,int) { }
-    void moveTo(int,int,int,int) { }
-    void advance() { }
-    T shift(int,int) { return T(); }
-
-private:
-    T value_;
-};
-
-
-/*
- * The stencilExtent object is passed to stencil objects to find out
- * the spatial extent of the stencil.  It pretends it's an array,
- * but really it's just recording the locations of the array reads
- * via operator().
- */
-
-template<int N_rank, class P_numtype>
-class stencilExtent {
-public:
-    typedef P_numtype T_numtype;
-
-    stencilExtent()
-    {
-        min_ = 0;
-        max_ = 0;
-    }
-  
-    dummy<T_numtype> operator()(int i)
-    {
-        update(0, i);
-        return dummy<T_numtype>(1);
-    }
- 
-    dummy<T_numtype> operator()(int i, int j)
-    {
-        update(0, i);
-        update(1, j);
-        return dummy<T_numtype>(1);
-    }
-
-    dummy<T_numtype> operator()(int i, int j, int k)
-    {
-        update(0, i);
-        update(1, j);
-        update(2, k);
-        return dummy<T_numtype>(1);
-    }
-
-    dummy<T_numtype> shift(int offset, int dim)
-    {
-        update(dim, offset);
-        return dummy<T_numtype>(1);
-    }
-  
-    dummy<T_numtype> shift(int offset1, int dim1, int offset2, int dim2)
-    {
-        update(dim1, offset1);
-        update(dim2, offset2);
-        return dummy<T_numtype>(1);
-    }
- 
-    dummy<_bz_typename multicomponent_traits<T_numtype>::T_element> 
-        operator[](int)
-    {
-        return dummy<_bz_typename multicomponent_traits<T_numtype>::T_element>
-            (1);
-    }
- 
-    void update(int rank, int offset)
-    {
-        if (offset < min_[rank])
-            min_[rank] = offset;
-        if (offset > max_[rank])
-            max_[rank] = offset;
-    }
-
-    template<class T_numtype2>
-    void combine(const stencilExtent<N_rank,T_numtype2>& x)
-    {
-        for (int i=0; i < N_rank; ++i)
-        {
-            min_[i] = minmax::min(min_[i], x.min(i));
-            max_[i] = minmax::max(max_[i], x.max(i));
-        }
-    }
-
-    template<class T_numtype2>
-    void combine(const dummy<T_numtype2>&)
-    { }
-
-    int min(int i) const
-    { return min_[i]; }
-
-    int max(int i) const
-    { return max_[i]; }
-
-    const TinyVector<int,N_rank>& min() const
-    { return min_; }
-
-    const TinyVector<int,N_rank>& max() const
-    { return max_; }
-
-    template<class T>
-    void operator=(T)
-    { }
-
-    // NEEDS_WORK: other operators
-    template<class T> void operator+=(T) { }
-    template<class T> void operator-=(T) { }
-    template<class T> void operator*=(T) { }
-    template<class T> void operator/=(T) { }
-
-    operator T_numtype()
-    { return T_numtype(1); }
-
-    T_numtype operator*()
-    { return T_numtype(1); }
- 
-private:
-    _bz_mutable TinyVector<int,N_rank> min_, max_;
-};
-
-
-/*
- * stencilExtent_traits gives a stencilExtent<N,T> object for arrays,
- * and a dummy object for dummy arrays.
- */
-template<class T>
-struct stencilExtent_traits {
-    typedef dummy<double> T_stencilExtent;
-};
-
-template<class T_numtype, int N_rank>
-struct stencilExtent_traits<Array<T_numtype,N_rank> > {
-    typedef stencilExtent<N_rank,T_numtype> T_stencilExtent;
-};
-
-/*
- * Specialization of areShapesConformable(), originally
- * defined in <blitz/shapecheck.h>
- */
-
-template<class T_shape1>
-inline _bz_bool areShapesConformable(const T_shape1&, const dummyArray&)
-{
-    return _bz_true;
-}
-
-BZ_NAMESPACE_END
-
-#include <blitz/array/stencil.cc>
-
-#endif // BZ_ARRAYSTENCIL_H
-
diff --git a/weave/blitz-20001213/blitz/array/stencilops.h b/weave/blitz-20001213/blitz/array/stencilops.h
deleted file mode 100644
index 656567c..0000000
--- a/weave/blitz-20001213/blitz/array/stencilops.h
+++ /dev/null
@@ -1,1147 +0,0 @@
-#ifndef BZ_ARRAYSTENCILOPS_H
-#define BZ_ARRAYSTENCILOPS_H
-
-// NEEDS_WORK: need to factor many of the stencils in terms of the
-// integer constants, e.g. 16*(A(-1,0)+A(0,-1)+A(0,1)+A(1,0))
-
-#ifndef BZ_ARRAYSTENCIL_H
- #error <blitz/array/stencilops.h> must be included via <blitz/array/stencil.h>
-#endif
-
-#ifndef BZ_GEOMETRY_H
- #include <blitz/array/geometry.h>
-#endif
-
-#ifndef BZ_TINYMAT_H
- #include <blitz/tinymat.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-#define BZ_DECLARE_STENCIL_OPERATOR1(name,A)     \
-  template<class T>                              \
-  inline _bz_typename T::T_numtype name(T& A)    \
-  {
-
-#define BZ_END_STENCIL_OPERATOR   }
-
-#define BZ_DECLARE_STENCIL_OPERATOR2(name,A,B)       \
-  template<class T>                                  \
-  inline _bz_typename T::T_numtype name(T& A, T& B)  \
-  {
-
-#define BZ_DECLARE_STENCIL_OPERATOR3(name,A,B,C) \
-  template<class T>                              \
-  inline _bz_typename T::T_numtype name(T& A, T& B, T& C)    \
-  {
-
-// These constants are accurate to 45 decimal places = 149 bits of mantissa
-const double recip_2 = .500000000000000000000000000000000000000000000;
-const double recip_4 = .250000000000000000000000000000000000000000000;
-const double recip_6 = .166666666666666666666666666666666666666666667;
-const double recip_8 = .125000000000000000000000000000000000000000000;
-const double recip_12 = .0833333333333333333333333333333333333333333333;
-const double recip_144 = .00694444444444444444444444444444444444444444444;
-
-/****************************************************************************
- * Laplacian Operators
- ****************************************************************************/
-
-BZ_DECLARE_STENCIL_OPERATOR1(Laplacian2D, A)
-    return -4.0 * A + A.shift(-1,0) + A.shift(1,0) + A.shift(-1,1)
-      + A.shift(1,1);
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR1(Laplacian3D, A)
-    return -6.0 * A 
-      + A.shift(-1,0) + A.shift(1,0) 
-      + A.shift(-1,1) + A.shift(1,1)
-      + A.shift(-1,2) + A.shift(1,2);
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR1(Laplacian2D4, A)
-    return -60. * A 
-      + 16.*(A.shift(-1,0) + A.shift(1,0) + A.shift(-1,1) + A.shift(1,1))
-      -     (A.shift(-2,0) + A.shift(2,0) + A.shift(-2,1) + A.shift(2,1));
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR1(Laplacian2D4n, A)
-    return Laplacian2D4(A) * recip_12;
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR1(Laplacian3D4, A)
-    return -90. * A 
-      + 16.*(A.shift(-1,0) + A.shift(1,0) + A.shift(-1,1) + A.shift(1,1)
-           + A.shift(-1,2) + A.shift(1,2))
-      -     (A.shift(-2,0) + A.shift(2,0) + A.shift(-2,1) + A.shift(2,1)
-           + A.shift(-2,2) + A.shift(2,2));
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR1(Laplacian3D4n, A)
-    return Laplacian3D4(A) * recip_12;
-BZ_END_STENCIL_OPERATOR
-
-/****************************************************************************
- * Derivatives
- ****************************************************************************/
-
-#define BZ_DECLARE_DIFF(name)  \
-  template<class T> \
-  inline _bz_typename T::T_numtype name(T& A, int dim = firstDim)
-
-#define BZ_DECLARE_MULTIDIFF(name) \
-  template<class T> \
-  inline _bz_typename multicomponent_traits<_bz_typename     \
-     T::T_numtype>::T_element name(T& A, int comp, int dim)
-
-/****************************************************************************
- * Central differences with accuracy O(h^2)
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(central12) {
-  return A.shift(1,dim) - A.shift(-1,dim);
-}
-
-BZ_DECLARE_DIFF(central22) {
-  return A.shift(-1,dim) - 2. * A + A.shift(+1,dim);
-}
-
-BZ_DECLARE_DIFF(central32) {
-  return -A.shift(-2,dim) + 2.*(A.shift(-1,dim) - A.shift(+1,dim))
-    + A.shift(+2,dim);
-}
-
-BZ_DECLARE_DIFF(central42) {
-  return A.shift(-2,dim) + A.shift(2,dim) -4.*(A.shift(-1,dim)+A.shift(+1,dim)) 
-    +6.*A.shift(0,dim);
-}
-
-/****************************************************************************
- * Central differences with accuracy O(h^2)  (multicomponent versions)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(central12) {
-  return A.shift(1,dim)[comp] - A.shift(-1,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(central22) {
-  return A.shift(-1,dim)[comp] - 2. * (*A)[comp] + A.shift(+1,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(central32) {
-  return -A.shift(-2,dim)[comp] + 2.*A.shift(-1,dim)[comp] 
-    -2.*A.shift(+1,dim)[comp] + A.shift(+2,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(central42) {
-  return A.shift(-2,dim)[comp] -4.*A.shift(-1,dim)[comp] 
-    +6.*A.shift(0,dim)[comp] -4.*A.shift(1,dim)[comp] +A.shift(2,dim)[comp];
-}
-
-/****************************************************************************
- * Central differences with accuracy O(h^2)  (normalized versions)
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(central12n) {
-  return central12(A,dim) * recip_2;
-}
-
-BZ_DECLARE_DIFF(central22n) {
-  return central22(A,dim);
-}
-
-BZ_DECLARE_DIFF(central32n) {
-  return central32(A,dim) * recip_2;
-}
-
-BZ_DECLARE_DIFF(central42n) {
-  return central42(A,dim);
-}
-
-/****************************************************************************
- * Central differences with accuracy O(h^2)  (normalized multicomponent)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(central12n) {
-  return central12(A,comp,dim) * recip_2;
-}
-
-BZ_DECLARE_MULTIDIFF(central22n) {
-  return central22(A,comp,dim);
-}
-
-BZ_DECLARE_MULTIDIFF(central32n) {
-  return central32(A,comp,dim) * recip_2;
-}
-
-BZ_DECLARE_MULTIDIFF(central42n) {
-  return central42(A,comp,dim);
-}
-
-/****************************************************************************
- * Central differences with accuracy O(h^4)  
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(central14) {
-  return (A.shift(-2,dim) - A.shift(2,dim)) 
-     + 8.*(A.shift(1,dim)-A.shift(-1,dim));
-}
-
-BZ_DECLARE_DIFF(central24) {
-  return -30.*A + 16.*(A.shift(-1,dim)+A.shift(1,dim))
-    - (A.shift(-2,dim)+A.shift(2,dim));
-}
-
-BZ_DECLARE_DIFF(central34) {
-  return A.shift(-3,dim) - 8.*A.shift(-2,dim) +13.*A.shift(-1,dim) 
-     -13.*A.shift(1,dim)+8.*A.shift(2,dim)-A.shift(3,dim);
-}
-
-BZ_DECLARE_DIFF(central44) {
-  return -1.*A.shift(-3,dim)+12.*A.shift(-2,dim)-39.*A.shift(-1,dim)
-    +56.*A-39.*A.shift(1,dim)+12.*A.shift(2,dim)-A.shift(3,dim);
-}
-
-/****************************************************************************
- * Central differences with accuracy O(h^4)  (multicomponent versions)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(central14) {
-  return A.shift(-2,dim)[comp] - 8. * A.shift(-1,dim)[comp] 
-    + 8. * A.shift(1,dim)[comp] - A.shift(2,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(central24) {
-  return - A.shift(-2,dim)[comp] + 16.*A.shift(-1,dim)[comp] - 30.*(*A)[comp]
-    + 16.*A.shift(1,dim)[comp] - A.shift(2,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(central34) {
-  return A.shift(-3,dim)[comp] - 8.*A.shift(-2,dim)[comp] 
-    +13.*A.shift(-1,dim)[comp] - 13.*A.shift(1,dim)[comp] 
-    + 8.*A.shift(2,dim)[comp] - A.shift(3,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(central44) {
-  return -1.*A.shift(-3,dim)[comp]+12.*A.shift(-2,dim)[comp]
-    -39.*A.shift(-1,dim)[comp] +56.*(*A)[comp]-39.*A.shift(1,dim)[comp]
-    +12.*A.shift(2,dim)[comp]-A.shift(3,dim)[comp];
-}
-
-/****************************************************************************
- * Central differences with accuracy O(h^4)  (normalized)
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(central14n) {
-  return central14(A,dim) * recip_12;
-}
-
-BZ_DECLARE_DIFF(central24n) {
-  return central24(A,dim) * recip_12;
-}
-
-BZ_DECLARE_DIFF(central34n) {
-  return central34(A,dim) * recip_8;
-}
-
-BZ_DECLARE_DIFF(central44n) {
-  return central44(A,dim) * recip_6;
-}
-
-/****************************************************************************
- * Central differences with accuracy O(h^4)  (normalized, multicomponent)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(central14n) {
-  return central14(A,comp,dim) * recip_12;
-}
-
-BZ_DECLARE_MULTIDIFF(central24n) {
-  return central24(A,comp,dim) * recip_12;
-}
-
-BZ_DECLARE_MULTIDIFF(central34n) {
-  return central34(A,comp,dim) * recip_8;
-}
-
-BZ_DECLARE_MULTIDIFF(central44n) {
-  return central44(A,comp,dim) * recip_6;
-}
-
-/****************************************************************************
- * Backward differences with accuracy O(h)
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(backward11) {
-  return A - A.shift(-1,dim);
-}
-
-BZ_DECLARE_DIFF(backward21) {
-  return A -2.*A.shift(-1,dim) + A.shift(-2,dim);
-}
-
-BZ_DECLARE_DIFF(backward31) {
-  return A -3.*A.shift(-1,dim) + 3.*A.shift(-2,dim)-A.shift(-3,dim);
-}
-
-BZ_DECLARE_DIFF(backward41) {
-  return A - 4.*A.shift(-1,dim) + 6.*A.shift(-2,dim) -4.*A.shift(-3,dim) 
-    + A.shift(-4,dim);
-}
-
-/****************************************************************************
- * Backward differences with accuracy O(h) (multicomponent versions)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(backward11) {
-  return (*A)[comp] - A.shift(-1,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(backward21) {
-  return (*A)[comp] -2.*A.shift(-1,dim)[comp] + A.shift(-2,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(backward31) {
-  return (*A)[comp] -3.*A.shift(-1,dim)[comp] + 3.*A.shift(-2,dim)[comp]
-    -A.shift(-3,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(backward41) {
-  return (*A)[comp] - 4.*A.shift(-1,dim)[comp] + 6.*A.shift(-2,dim)[comp]
-    -4.*A.shift(-3,dim)[comp] + A.shift(-4,dim)[comp];
-}
-
-/****************************************************************************
- * Backward differences with accuracy O(h)  (normalized)
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(backward11n) { return backward11(A,dim); }
-BZ_DECLARE_DIFF(backward21n) { return backward21(A,dim); }
-BZ_DECLARE_DIFF(backward31n) { return backward31(A,dim); }
-BZ_DECLARE_DIFF(backward41n) { return backward41(A,dim); }
-
-/****************************************************************************
- * Backward differences with accuracy O(h)  (normalized, multicomponent)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(backward11n) { return backward11(A,comp,dim); }
-BZ_DECLARE_MULTIDIFF(backward21n) { return backward21(A,comp,dim); }
-BZ_DECLARE_MULTIDIFF(backward31n) { return backward31(A,comp,dim); }
-BZ_DECLARE_MULTIDIFF(backward41n) { return backward41(A,comp,dim); }
-
-/****************************************************************************
- * Backward differences with accuracy O(h^2)
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(backward12) {
-  return 3.*A -4.*A.shift(-1,dim) + A.shift(-2,dim);
-}
-
-BZ_DECLARE_DIFF(backward22) {
-  return 2.*A -5.*A.shift(-1,dim) + 4.*A.shift(-2,dim) -A.shift(-3,dim);
-}
-
-BZ_DECLARE_DIFF(backward32) {
-  return 5.*A - 18.*A.shift(-1,dim) + 24.*A.shift(-2,dim) -14.*A.shift(-3,dim) 
-    + 3.*A.shift(-4,dim);
-}
-
-BZ_DECLARE_DIFF(backward42) {
-  return 3.*A -14.*A.shift(-1,dim) + 26.*A.shift(-2,dim) -24.*A.shift(-3,dim) 
-    + 11.*A.shift(-4,dim) -2.*A.shift(-5,dim);
-}
-
-/****************************************************************************
- * Backward differences with accuracy O(h^2) (multicomponent versions)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(backward12) {
-  return 3.*(*A)[comp] -4.*A.shift(-1,dim)[comp] + A.shift(-2,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(backward22) {
-  return 2.*(*A)[comp] -5.*A.shift(-1,dim)[comp] + 4.*A.shift(-2,dim)[comp]
-     -A.shift(-3,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(backward32) {
-  return 5.*(*A)[comp] - 18.*A.shift(-1,dim)[comp] + 24.*A.shift(-2,dim)[comp]
-     -14.*A.shift(-3,dim)[comp] + 3.*A.shift(-4,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(backward42) {
-  return 3.*(*A)[comp] -14.*A.shift(-1,dim)[comp] + 26.*A.shift(-2,dim)[comp]
-    -24.*A.shift(-3,dim)[comp] + 11.*A.shift(-4,dim)[comp] 
-    -2.*A.shift(-5,dim)[comp];
-}
-
-/****************************************************************************
- * Backward differences with accuracy O(h^2)  (normalized)
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(backward12n) { return backward12(A,dim) * recip_2; }
-BZ_DECLARE_DIFF(backward22n) { return backward22(A,dim); }
-BZ_DECLARE_DIFF(backward32n) { return backward32(A,dim) * recip_2; }
-BZ_DECLARE_DIFF(backward42n) { return backward42(A,dim); }
-
-/****************************************************************************
- * Backward differences with accuracy O(h^2)  (normalized, multicomponent)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(backward12n) { return backward12(A,comp,dim) * recip_2; }
-BZ_DECLARE_MULTIDIFF(backward22n) { return backward22(A,comp,dim); }
-BZ_DECLARE_MULTIDIFF(backward32n) { return backward32(A,comp,dim) * recip_2; }
-BZ_DECLARE_MULTIDIFF(backward42n) { return backward42(A,comp,dim); }
-
-/****************************************************************************
- * Forward differences with accuracy O(h)  
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(forward11) {
-  return A.shift(1,dim) - A;
-}
-
-BZ_DECLARE_DIFF(forward21) {
-  return A - 2.*A.shift(1,dim) + A.shift(2,dim);
-}
-
-BZ_DECLARE_DIFF(forward31) {
-  return -A + 3.*A.shift(1,dim) -3.*A.shift(2,dim) + A.shift(3,dim);
-}
-
-BZ_DECLARE_DIFF(forward41) {
-  return A -4.*A.shift(1,dim) + 6.*A.shift(2,dim) -4.*A.shift(3,dim) 
-    + A.shift(4,dim);
-}
-
-/****************************************************************************
- * Forward differences with accuracy O(h)  (multicomponent versions)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(forward11) {
-  return -(*A)[comp]+A.shift(1,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(forward21) {
-  return (*A)[comp] - 2.*A.shift(1,dim)[comp] + A.shift(2,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(forward31) {
-  return -(*A)[comp] + 3.*A.shift(1,dim)[comp] -3.*A.shift(2,dim)[comp] 
-    + A.shift(3,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(forward41) {
-  return (*A)[comp] -4.*A.shift(1,dim)[comp] + 6.*A.shift(2,dim)[comp] 
-    -4.*A.shift(3,dim)[comp] + A.shift(4,dim)[comp];
-}
-
-/****************************************************************************
- * Forward differences with accuracy O(h)     (normalized)
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(forward11n) { return forward11(A,dim); }
-BZ_DECLARE_DIFF(forward21n) { return forward21(A,dim); }
-BZ_DECLARE_DIFF(forward31n) { return forward31(A,dim); }
-BZ_DECLARE_DIFF(forward41n) { return forward41(A,dim); }
-
-/****************************************************************************
- * Forward differences with accuracy O(h)     (multicomponent,normalized)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(forward11n) { return forward11(A,comp,dim); }
-BZ_DECLARE_MULTIDIFF(forward21n) { return forward21(A,comp,dim); }
-BZ_DECLARE_MULTIDIFF(forward31n) { return forward31(A,comp,dim); }
-BZ_DECLARE_MULTIDIFF(forward41n) { return forward41(A,comp,dim); }
-
-/****************************************************************************
- * Forward differences with accuracy O(h^2)     
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(forward12) {
-  return -3.*A + 4.*A.shift(1,dim) - A.shift(2,dim);
-}
-
-BZ_DECLARE_DIFF(forward22) {
-  return 2.*A -5.*A.shift(1,dim) + 4.*A.shift(2,dim) -A.shift(3,dim);
-}
-
-BZ_DECLARE_DIFF(forward32) {
-  return -5.*A + 18.*A.shift(1,dim) -24.*A.shift(2,dim) 
-    + 14.*A.shift(3,dim) -3.*A.shift(4,dim);
-}
-
-BZ_DECLARE_DIFF(forward42) {
-  return 3.*A -14.*A.shift(1,dim) + 26.*A.shift(2,dim) -24.*A.shift(3,dim) 
-    +11.*A.shift(4,dim) -2.*A.shift(5,dim);
-}
-
-/****************************************************************************
- * Forward differences with accuracy O(h^2)   (multicomponent versions)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(forward12) {
-  return -3.*(*A)[comp] + 4.*A.shift(1,dim)[comp] - A.shift(2,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(forward22) {
-  return 2.*(*A)[comp] -5.*A.shift(1,dim)[comp] + 4.*A.shift(2,dim)[comp] 
-    -A.shift(3,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(forward32) {
-  return -5.*(*A)[comp] + 18.*A.shift(1,dim)[comp] -24.*A.shift(2,dim)[comp]
-    + 14.*A.shift(3,dim)[comp] -3.*A.shift(4,dim)[comp];
-}
-
-BZ_DECLARE_MULTIDIFF(forward42) {
-  return 3.*(*A)[comp] -14.*A.shift(1,dim)[comp] + 26.*A.shift(2,dim)[comp] 
-    -24.*A.shift(3,dim)[comp] +11.*A.shift(4,dim)[comp] 
-    + 11.*A.shift(5,dim)[comp];
-}
-
-
-/****************************************************************************
- * Forward differences with accuracy O(h^2)     (normalized)
- ****************************************************************************/
-
-BZ_DECLARE_DIFF(forward12n) { return forward12(A,dim) * recip_2; }
-BZ_DECLARE_DIFF(forward22n) { return forward22(A,dim); }
-BZ_DECLARE_DIFF(forward32n) { return forward32(A,dim) * recip_2; }
-BZ_DECLARE_DIFF(forward42n) { return forward42(A,dim); }
-
-/****************************************************************************
- * Forward differences with accuracy O(h^2)     (normalized)
- ****************************************************************************/
-
-BZ_DECLARE_MULTIDIFF(forward12n) { return forward12(A,comp,dim) * recip_2; }
-BZ_DECLARE_MULTIDIFF(forward22n) { return forward22(A,comp,dim); }
-BZ_DECLARE_MULTIDIFF(forward32n) { return forward32(A,comp,dim) * recip_2; }
-BZ_DECLARE_MULTIDIFF(forward42n) { return forward42(A,comp,dim); }
-
-/****************************************************************************
- * Gradient operators
- ****************************************************************************/
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,2> grad2D(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,2>(
-    central12(A,firstDim),
-    central12(A,secondDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,2> grad2D4(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,2>(
-    central14(A,firstDim),
-    central14(A,secondDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> grad3D(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central12(A,firstDim),
-    central12(A,secondDim),
-    central12(A,thirdDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> grad3D4(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central14(A,firstDim),
-    central14(A,secondDim),
-    central14(A,thirdDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,2> grad2Dn(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,2>(
-    central12n(A,firstDim),
-    central12n(A,secondDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,2> grad2D4n(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,2>(
-    central14n(A,firstDim),
-    central14n(A,secondDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> grad3Dn(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central12n(A,firstDim),
-    central12n(A,secondDim),
-    central12n(A,thirdDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> grad3D4n(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central14n(A,firstDim),
-    central14n(A,secondDim),
-    central14n(A,thirdDim));
-}
-
-/****************************************************************************
- * Grad-squared operators
- ****************************************************************************/
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,2> gradSqr2D(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,2>(
-    central22(A,firstDim),
-    central22(A,secondDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,2> gradSqr2D4(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,2>(
-    central24(A,firstDim),
-    central24(A,secondDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> gradSqr3D(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central22(A,firstDim),
-    central22(A,secondDim),
-    central22(A,thirdDim));
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> gradSqr3D4(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central24(A,firstDim),
-    central24(A,secondDim),
-    central24(A,thirdDim));
-}
-
-/****************************************************************************
- * Grad-squared operators (normalized)
- ****************************************************************************/
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,2> gradSqr2Dn(T& A) {
-  return gradSqr2D(A);
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,2> gradSqr2D4n(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,2>(
-    central24(A,firstDim) * recip_12,
-    central24(A,secondDim) * recip_12);
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> gradSqr3Dn(T& A) {
-  return gradSqr3D(A);
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> gradSqr3D4n(T& A) {
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central24(A,firstDim) * recip_12,
-    central24(A,secondDim) * recip_12,
-    central24(A,thirdDim) * recip_12);
-}
-
-/****************************************************************************
- * Gradient operators on a vector field
- ****************************************************************************/
-
-template<class T>
-inline TinyMatrix<_bz_typename multicomponent_traits<_bz_typename 
-    T::T_numtype>::T_element, 3, 3>
-Jacobian3D(T& A)
-{
-    const int x=0, y=1, z=2;
-    const int u=0, v=1, w=2;
-
-    TinyMatrix<_bz_typename multicomponent_traits<_bz_typename 
-        T::T_numtype>::T_element, 3, 3> grad;
-
-    grad(u,x) = central12(A,u,x);
-    grad(u,y) = central12(A,u,y);
-    grad(u,z) = central12(A,u,z);
-    grad(v,x) = central12(A,v,x);
-    grad(v,y) = central12(A,v,y);
-    grad(v,z) = central12(A,v,z);
-    grad(w,x) = central12(A,w,x);
-    grad(w,y) = central12(A,w,y);
-    grad(w,z) = central12(A,w,z);
-
-    return grad;
-}
-
-template<class T>
-inline TinyMatrix<_bz_typename multicomponent_traits<_bz_typename 
-    T::T_numtype>::T_element, 3, 3>
-Jacobian3Dn(T& A)
-{
-    const int x=0, y=1, z=2;
-    const int u=0, v=1, w=2;
-
-    TinyMatrix<_bz_typename multicomponent_traits<_bz_typename 
-        T::T_numtype>::T_element, 3, 3> grad;
-    
-    grad(u,x) = central12n(A,u,x);
-    grad(u,y) = central12n(A,u,y);
-    grad(u,z) = central12n(A,u,z);
-    grad(v,x) = central12n(A,v,x);
-    grad(v,y) = central12n(A,v,y);
-    grad(v,z) = central12n(A,v,z);
-    grad(w,x) = central12n(A,w,x);
-    grad(w,y) = central12n(A,w,y);
-    grad(w,z) = central12n(A,w,z);
-
-    return grad;
-}
-
-template<class T>
-inline TinyMatrix<_bz_typename multicomponent_traits<_bz_typename
-    T::T_numtype>::T_element, 3, 3>
-Jacobian3D4(T& A)
-{
-    const int x=0, y=1, z=2;
-    const int u=0, v=1, w=2;
-
-    TinyMatrix<_bz_typename multicomponent_traits<_bz_typename 
-        T::T_numtype>::T_element, 3, 3> grad;
-    
-    grad(u,x) = central14(A,u,x);
-    grad(u,y) = central14(A,u,y);
-    grad(u,z) = central14(A,u,z);
-    grad(v,x) = central14(A,v,x);
-    grad(v,y) = central14(A,v,y);
-    grad(v,z) = central14(A,v,z);
-    grad(w,x) = central14(A,w,x);
-    grad(w,y) = central14(A,w,y);
-    grad(w,z) = central14(A,w,z);
-
-    return grad;
-}
-
-template<class T>
-inline TinyMatrix<_bz_typename multicomponent_traits<_bz_typename
-    T::T_numtype>::T_element, 3, 3>
-Jacobian3D4n(T& A)
-{
-    const int x=0, y=1, z=2;
-    const int u=0, v=1, w=2;
-
-    TinyMatrix<_bz_typename multicomponent_traits<_bz_typename 
-        T::T_numtype>::T_element, 3, 3> grad;
-    
-    grad(u,x) = central14n(A,u,x);
-    grad(u,y) = central14n(A,u,y);
-    grad(u,z) = central14n(A,u,z);
-    grad(v,x) = central14n(A,v,x);
-    grad(v,y) = central14n(A,v,y);
-    grad(v,z) = central14n(A,v,z);
-    grad(w,x) = central14n(A,w,x);
-    grad(w,y) = central14n(A,w,y);
-    grad(w,z) = central14n(A,w,z);
-
-    return grad;
-}
-
-/****************************************************************************
- * Curl operators
- ****************************************************************************/
-
-// O(h^2) curl, using central difference
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> 
-curl(T& vx, T& vy, T& vz) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central12(vz,y)-central12(vy,z),
-    central12(vx,z)-central12(vz,x),
-    central12(vy,x)-central12(vx,y));
-}
-
-// Normalized O(h^2) curl, using central difference
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3>
-curln(T& vx, T& vy, T& vz) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    (central12(vz,y)-central12(vy,z)) * recip_2,
-    (central12(vx,z)-central12(vz,x)) * recip_2,
-    (central12(vy,x)-central12(vx,y)) * recip_2);
-}
-
-// Multicomponent curl
-template<class T>
-inline _bz_typename T::T_numtype curl(T& A) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-
-  return T::T_numtype(
-    central12(A,z,y)-central12(A,y,z),
-    central12(A,x,z)-central12(A,z,x),
-    central12(A,y,x)-central12(A,x,y));
-}
-
-// Normalized multicomponent curl
-template<class T>
-inline _bz_typename T::T_numtype curln(T& A) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-
-  return T::T_numtype(
-    (central12(A,z,y)-central12(A,y,z)) * recip_2,
-    (central12(A,x,z)-central12(A,z,x)) * recip_2,
-    (central12(A,y,x)-central12(A,x,y)) * recip_2);
-}
-
-// O(h^4) curl, using 4th order central difference
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3>
-curl4(T& vx, T& vy, T& vz) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central14(vz,y)-central14(vy,z),
-    central14(vx,z)-central14(vz,x),
-    central14(vy,x)-central14(vx,y));
-}
-
-// O(h^4) curl, using 4th order central difference (multicomponent version)
-template<class T>
-inline _bz_typename T::T_numtype
-curl4(T& A) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-
-  return T::T_numtype(
-    central14(A,z,y)-central14(A,y,z),
-    central14(A,x,z)-central14(A,z,x),
-    central14(A,y,x)-central14(A,x,y));
-}
-
-// Normalized O(h^4) curl, using 4th order central difference
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3>
-curl4n(T& vx, T& vy, T& vz) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    (central14(vz,y)-central14(vy,z)) * recip_2,
-    (central14(vx,z)-central14(vz,x)) * recip_2,
-    (central14(vy,x)-central14(vx,y)) * recip_2);
-}
-
-// O(h^4) curl, using 4th order central difference (normalized multicomponent)
-template<class T>
-inline _bz_typename T::T_numtype
-curl4n(T& A) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-
-  return T::T_numtype(
-    (central14(A,z,y)-central14(A,y,z)) * recip_2,
-    (central14(A,x,z)-central14(A,z,x)) * recip_2,
-    (central14(A,y,x)-central14(A,x,y)) * recip_2);
-}
-
-
-
-// Two-dimensional curl
-
-template<class T>
-inline _bz_typename T::T_numtype
-curl(T& vx, T& vy) {
-  const int x = firstDim, y = secondDim;
-
-  return central12(vy,x)-central12(vx,y);
-}
-
-template<class T>
-inline _bz_typename T::T_numtype
-curln(T& vx, T& vy) {
-  const int x = firstDim, y = secondDim;
-
-  return (central12(vy,x)-central12(vx,y)) * recip_2;
-}
-
-// Multicomponent curl
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype curl2D(T& A) {
-  const int x = firstDim, y = secondDim;
-  return central12(A,y,x)-central12(A,x,y);
-}
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype curl2Dn(T& A) {
-  const int x = firstDim, y = secondDim;
-  return (central12(A,y,x)-central12(A,x,y)) * recip_2;
-}
-
-
-// 4th order versions
-
-template<class T>
-inline _bz_typename T::T_numtype
-curl4(T& vx, T& vy) {
-  const int x = firstDim, y = secondDim;
-
-  return central14(vy,x)-central14(vx,y);
-}
-
-template<class T>
-inline _bz_typename T::T_numtype
-curl4n(T& vx, T& vy) {
-  const int x = firstDim, y = secondDim;
-
-  return (central14(vy,x)-central14(vx,y)) * recip_12;
-}
-
-// Multicomponent curl
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype curl2D4(T& A) {
-  const int x = firstDim, y = secondDim;
-  return central14(A,y,x)-central14(A,x,y);
-}
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype curl2D4n(T& A) {
-  const int x = firstDim, y = secondDim;
-  return (central14(A,y,x)-central14(A,x,y)) * recip_12;
-}
-
-/****************************************************************************
- * Divergence
- ****************************************************************************/
-
-
-BZ_DECLARE_STENCIL_OPERATOR2(div,vx,vy)
-  return central12(vx,firstDim) + central12(vy,secondDim);
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR2(divn,vx,vy)
-  return (central12(vx,firstDim) + central12(vy,secondDim))
-     * recip_2;
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR2(div4,vx,vy)
-  return central14(vx,firstDim) + central14(vy,secondDim);
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR2(div4n,vx,vy)
-  return (central14(vx,firstDim) + central14(vy,secondDim))
-    * recip_12;
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR3(div,vx,vy,vz)
-  return central12(vx,firstDim) + central12(vy,secondDim) 
-    + central12(vz,thirdDim);
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR3(divn,vx,vy,vz)
-  return (central12(vx,firstDim) + central12(vy,secondDim) 
-    + central12(vz,thirdDim)) * recip_2;
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR3(div4,vx,vy,vz)
-  return central14(vx,firstDim) + central14(vy,secondDim) 
-    + central14(vz,thirdDim);
-BZ_END_STENCIL_OPERATOR
-
-BZ_DECLARE_STENCIL_OPERATOR3(div4n,vx,vy,vz)
-  return (central14(vx,firstDim) + central14(vy,secondDim)
-    + central14(vz,thirdDim)) * recip_12;
-BZ_END_STENCIL_OPERATOR
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype
-div2D(T& A) {
-  const int x = firstDim, y = secondDim;
-  return central12(A,x,x) + central12(A,y,y);
-}
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype
-div2D4(T& A) {
-  const int x = firstDim, y = secondDim;
-  return central14(A,x,x) + central14(A,y,y);
-}
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype
-div2Dn(T& A) {
-  const int x = firstDim, y = secondDim;
-  return (central12(A,x,x) + central12(A,y,y)) * recip_2;
-}
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype
-div2D4n(T& A) {
-  const int x = firstDim, y = secondDim;
-  return (central14(A,x,x) + central14(A,y,y)) * recip_12;
-}
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype
-div3D(T& A) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-  return central12(A,x,x) + central12(A,y,y) + central12(A,z,z);
-}
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype
-div3D4(T& A) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-  return central14(A,x,x) + central14(A,y,y) + central14(A,z,z);
-}
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype
-div3Dn(T& A) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-  return (central12(A,x,x) + central12(A,y,y) + central12(A,z,z))
-    * recip_2;
-}
-
-template<class T>
-inline _bz_typename T::T_numtype::T_numtype
-div3D4n(T& A) {
-  const int x = firstDim, y = secondDim, z = thirdDim;
-  return (central14(A,x,x) + central14(A,y,y) + central14(A,z,z))
-    * recip_12;
-}
-
-/****************************************************************************
- * Mixed Partial derivatives
- ****************************************************************************/
-
-template<class T>
-inline _bz_typename T::T_numtype
-mixed22(T& A, int x, int y)
-{
-    return A.shift(-1,x,-1,y) - A.shift(-1,x,1,y)
-        -A.shift(1,x,-1,y) + A.shift(1,x,1,y);
-}
-
-template<class T>
-inline _bz_typename T::T_numtype
-mixed22n(T& A, int x, int y)
-{
-    return mixed22(A, x, y) * recip_4;
-}
-
-template<class T>
-inline _bz_typename T::T_numtype
-mixed24(T& A, int x, int y)
-{
-    return 64.*(A.shift(-1,x,-1,y) - A.shift(-1,x,1,y)
-        -A.shift(1,x,-1,y) + A.shift(1,x,1,y))
-        + (A.shift(-2,x,+1,y) - A.shift(-1,x,2,y)
-        - A.shift(1,x,2,y)-A.shift(2,x,1,y)
-        + A.shift(2,x,-1,y)+A.shift(1,x,-2,y)
-        - A.shift(-1,x,-2,y)+A.shift(-2,x,-1,y))
-        + 8.*(A.shift(-1,x,1,y)+A.shift(-1,x,2,y)
-        -A.shift(2,x,-2,y) + A.shift(2,x,2,y));
-}
-
-template<class T>
-inline _bz_typename T::T_numtype
-mixed24n(T& A, int x, int y)
-{
-    return mixed24(A,x,y) * recip_144;
-}
-
-/****************************************************************************
- * Smoothers
- ****************************************************************************/
-
-// NEEDS_WORK-- put other stencil operators here:
-//   Average5pt2D
-//   Average7pt3D
-// etc.
-
-/****************************************************************************
- * Stencil operators with geometry (experimental)
- ****************************************************************************/
-
-template<class T>
-inline _bz_typename multicomponent_traits<_bz_typename
-    T::T_numtype>::T_element div3DVec4(T& A, 
-    const UniformCubicGeometry<3>& geom)
-{
-    const int x = 0, y = 1, z = 2;
-
-    return (central14(A, x, firstDim) + central14(A, y, secondDim)
-        + central14(A, z, thirdDim)) * recip_12 * geom.recipSpatialStep();
-}
-
-template<class T>
-inline _bz_typename T::T_numtype Laplacian3D4(T& A, 
-    const UniformCubicGeometry<3>& geom)
-{
-    return Laplacian3D4n(A) * geom.recipSpatialStepPow2();
-}
-
-template<class T>
-inline _bz_typename T::T_numtype Laplacian3DVec4(T& A,
-    const UniformCubicGeometry<3>& geom)
-{
-    typedef _bz_typename T::T_numtype vector3d;
-    typedef _bz_typename multicomponent_traits<vector3d>::T_element 
-        T_element;
-    const int u = 0, v = 1, w = 2;
-    const int x = 0, y = 1, z = 2;
-
-    // central24 is a 5-point stencil
-    // This is a 9*5 = 45 point stencil
-
-    T_element t1 = (central24(A,u,x) + central24(A,u,y) + central24(A,u,z))
-        * recip_12 * geom.recipSpatialStepPow2();
-
-    T_element t2 = (central24(A,v,x) + central24(A,v,y) + central24(A,v,z))
-        * recip_12 * geom.recipSpatialStepPow2();
-
-    T_element t3 = (central24(A,w,x) + central24(A,w,y) + central24(A,w,z))
-        * recip_12 * geom.recipSpatialStepPow2();
-
-    return vector3d(t1,t2,t3);
-}
-
-template<class T>
-inline TinyMatrix<_bz_typename multicomponent_traits<_bz_typename
-    T::T_numtype>::T_element, 3, 3>
-grad3DVec4(T& A, const UniformCubicGeometry<3>& geom)
-{
-    const int x=0, y=1, z=2;
-    const int u=0, v=1, w=2;
-
-    TinyMatrix<_bz_typename multicomponent_traits<_bz_typename
-        T::T_numtype>::T_element, 3, 3> grad;
-
-    // This is a 9*4 = 36 point stencil
-    grad(u,x) = central14n(A,u,x) * geom.recipSpatialStep();
-    grad(u,y) = central14n(A,u,y) * geom.recipSpatialStep();
-    grad(u,z) = central14n(A,u,z) * geom.recipSpatialStep();
-    grad(v,x) = central14n(A,v,x) * geom.recipSpatialStep();
-    grad(v,y) = central14n(A,v,y) * geom.recipSpatialStep();
-    grad(v,z) = central14n(A,v,z) * geom.recipSpatialStep();
-    grad(w,x) = central14n(A,w,x) * geom.recipSpatialStep();
-    grad(w,y) = central14n(A,w,y) * geom.recipSpatialStep();
-    grad(w,z) = central14n(A,w,z) * geom.recipSpatialStep();
-
-    return grad;
-}
-
-template<class T>
-inline TinyVector<_bz_typename T::T_numtype,3> grad3D4(T& A,
-    const UniformCubicGeometry<3>& geom) {
-  return TinyVector<_bz_typename T::T_numtype,3>(
-    central14(A,firstDim) * recip_12 * geom.recipSpatialStep(),
-    central14(A,secondDim) * recip_12 * geom.recipSpatialStep(),
-    central14(A,thirdDim) * recip_12 * geom.recipSpatialStep());
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYSTENCILOPS_H
-
diff --git a/weave/blitz-20001213/blitz/array/storage.h b/weave/blitz-20001213/blitz/array/storage.h
deleted file mode 100644
index 5b63098..0000000
--- a/weave/blitz-20001213/blitz/array/storage.h
+++ /dev/null
@@ -1,221 +0,0 @@
-#ifndef BZ_ARRAY_STORAGE_H
-#define BZ_ARRAY_STORAGE_H
-
-BZ_NAMESPACE(blitz)
-
-/*
- * Declaration of class GeneralStorage<N_rank>
- *
- * This class describes a storage format for an N-dimensional array.
- * The dimensions can be stored in an arbitrary order (for example, as
- * a C-style row major array or Fortran-style column major array, or
- * something else entirely).  Each dimension can be stored in either
- * ascending (the most common) or descending order.  Each dimension
- * can have its own base (starting index value: e.g. 0 for C-style arrays, 
- * 1 for Fortran arrays).
- *
- * GeneralArrayStorage<N> defaults to C-style arrays.  To implement
- * other storage formats, subclass and modify the constructor.  The
- * class FortranArray, below, is an example.
- *
- * Objects inheriting from GeneralArrayStorage<N> can be passed as
- * an optional constructor argument to Array objects.
- * e.g. Array<int,3> A(16,16,16, FortranArray<3>());
- * will create a 3-dimensional 16x16x16 Fortran-style array.
- */
-
-template<int N_rank>
-class GeneralArrayStorage {
-public:
-    class noInitializeFlag { };
-
-    GeneralArrayStorage(noInitializeFlag)
-    { }
-
-    GeneralArrayStorage()
-    {
-        ordering_ = Range(N_rank - 1, 0, -1);
-        ascendingFlag_ = 1;
-        base_ = 0;
-    }
-
-    GeneralArrayStorage(const GeneralArrayStorage<N_rank>& x)
-        : ordering_(x.ordering_), ascendingFlag_(x.ascendingFlag_),
-          base_(x.base_)
-    { 
-    }
-
-    GeneralArrayStorage(TinyVector<int,N_rank> ordering,
-        TinyVector<bool,N_rank> ascendingFlag)
-      : ordering_(ordering), ascendingFlag_(ascendingFlag)
-    {
-        base_ = 0;
-    }
-
-    ~GeneralArrayStorage()
-    { }
-
-    TinyVector<int, N_rank>& ordering()
-    { return ordering_; }
-
-    const TinyVector<int, N_rank>& ordering() const
-    { return ordering_; }
-
-    int ordering(int i) const
-    { return ordering_[i]; }
-
-    void setOrdering(int i, int order) 
-    { ordering_[i] = order; }
-
-    _bz_bool allRanksStoredAscending() const
-    {
-        _bz_bool result = _bz_true;
-        for (int i=0; i < N_rank; ++i)
-            result &= ascendingFlag_[i];
-        return result;
-    }
-
-    _bz_bool isRankStoredAscending(int i) const
-    { return ascendingFlag_[i]; }
-
-    TinyVector<bool, N_rank>& ascendingFlag() 
-    { return ascendingFlag_; }
-
-    const TinyVector<bool, N_rank>& ascendingFlag() const
-    { return ascendingFlag_; }
-
-    void setAscendingFlag(int i, int ascendingFlag) 
-    { ascendingFlag_[i] = ascendingFlag; }
-
-    TinyVector<int, N_rank>& base()
-    { return base_; }
-
-    const TinyVector<int, N_rank>& base() const
-    { return base_; }
-
-    int base(int i) const
-    { return base_[i]; }
-
-    void setBase(int i, int base)
-    { base_[i] = base; }
-
-    void setBase(const TinyVector<int, N_rank>& base)
-    { base_ = base; }
-
-protected:
-    /*
-     * ordering_[] specifies the order in which the array is stored in
-     * memory.  For a newly allocated array, ordering_(0) will give the
-     * rank with unit stride, and ordering_(N_rank-1) will be the rank
-     * with largest stride.  An order like [2, 1, 0] corresponds to
-     * C-style array storage; an order like [0, 1, 2] corresponds to
-     * Fortran array storage.
-     *
-     * ascendingFlag_[] indicates whether the data in a rank is stored
-     * in ascending or descending order.  Most of the time these values
-     * will all be true (indicating ascending order).  Some peculiar 
-     * formats (e.g. MS-Windows BMP image format) store the data in 
-     * descending order.
-     *  
-     * base_[] gives the first valid index for each rank.  For a C-style
-     * array, all the base_ elements will be zero; for a Fortran-style
-     * array, they will be one.  base_[] can be set arbitrarily using
-     * the Array constructor which takes a Range argument, e.g.
-     * Array<float,2> A(Range(30,40),Range(23,33));
-     * will create an array with base_[] = { 30, 23 }.
-     */
-    TinyVector<int,  N_rank> ordering_;
-    TinyVector<bool, N_rank> ascendingFlag_;
-    TinyVector<int,  N_rank> base_;
-};
-
-/*
- * Class FortranArray specializes GeneralArrayStorage to provide Fortran
- * style arrays (column major ordering, base of 1).  The noInitializeFlag()
- * passed to the base constructor indicates that the subclass will take
- * care of initializing the ordering_, ascendingFlag_ and base_ members.
- */
-
-template<int N_rank>
-class FortranArray : public GeneralArrayStorage<N_rank> {
-public:
-    FortranArray()
-        : GeneralArrayStorage<N_rank>(noInitializeFlag())
-    {
-        ordering_ = Range(0, N_rank - 1);
-        ascendingFlag_ = 1;
-        base_ = 1;
-    }
-};
-
-
-// This tag class can be used to provide a nicer notation for
-// constructing Fortran-style arrays: instead of
-//     Array<int,2> A(3, 3, FortranArray<2>());
-// one can simply write:
-//     Array<int,2> A(3, 3, fortranArray);
-// where fortranArray is an object of type _bz_fortranTag.
-
-class _bz_fortranTag {
-public:
-    operator GeneralArrayStorage<1>()
-    { return FortranArray<1>(); }
-
-    operator GeneralArrayStorage<2>()
-    { return FortranArray<2>(); }
-
-    operator GeneralArrayStorage<3>()
-    { return FortranArray<3>(); }
-
-    operator GeneralArrayStorage<4>()
-    { return FortranArray<4>(); }
-
-    operator GeneralArrayStorage<5>()
-    { return FortranArray<5>(); }
-
-    operator GeneralArrayStorage<6>()
-    { return FortranArray<6>(); }
-
-    operator GeneralArrayStorage<7>()
-    { return FortranArray<7>(); }
-
-    operator GeneralArrayStorage<8>()
-    { return FortranArray<8>(); }
-
-    operator GeneralArrayStorage<9>()
-    { return FortranArray<9>(); }
-
-    operator GeneralArrayStorage<10>()
-    { return FortranArray<10>(); }
-
-    operator GeneralArrayStorage<11>()
-    { return FortranArray<11>(); }
-};
-
-// A global instance of this class will be placed in
-// the blitz library (libblitz.a on unix machines).
-
-_bz_global _bz_fortranTag fortranArray;
-
-
-/*
- * Class ColumnMajorArray specializes GeneralArrayStorage to provide column
- * major arrays (column major ordering, base of 0).
- */
-
-template<int N_rank>
-class ColumnMajorArray : public GeneralArrayStorage<N_rank> {
-public:
-    ColumnMajorArray()
-        : GeneralArrayStorage<N_rank>(noInitializeFlag())
-    {
-        ordering_ = Range(0, N_rank - 1);
-        ascendingFlag_ = 1;
-        base_ = 0;
-    }
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAY_STORAGE_H
-
diff --git a/weave/blitz-20001213/blitz/array/uops.cc b/weave/blitz-20001213/blitz/array/uops.cc
deleted file mode 100644
index dc4725e..0000000
--- a/weave/blitz-20001213/blitz/array/uops.cc
+++ /dev/null
@@ -1,5354 +0,0 @@
-/***************************************************************************
- * blitz/arrayuops.cc	Expression templates for arrays, unary functions
- *
- * $Id$
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:36  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:14  tveldhui
- * Imported sources
- *
- */ 
-
-// Generated source file.  Do not edit. 
-// genarruops.cpp Dec  5 1998 17:08:40
-
-#ifndef BZ_ARRAYUOPS_CC
-#define BZ_ARRAYUOPS_CC
-
-#ifndef BZ_ARRAYEXPR_H
- #error <blitz/arrayuops.cc> must be included after <blitz/arrayexpr.h>
-#endif // BZ_ARRAYEXPR_H
-
-BZ_NAMESPACE(blitz)
-
-/****************************************************************************
- * abs
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_abs<T_numtype1> > >
-abs(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_abs<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_abs<_bz_typename P_expr1::T_numtype> > >
-abs(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_abs<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_abs<int> > >
-abs(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_abs<int> >(d1);
-}
-
-
-/****************************************************************************
- * acos
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_acos<T_numtype1> > >
-acos(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_acos<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_acos<_bz_typename P_expr1::T_numtype> > >
-acos(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_acos<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_acos<int> > >
-acos(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_acos<int> >(d1);
-}
-
-
-/****************************************************************************
- * acosh
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_acosh<T_numtype1> > >
-acosh(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_acosh<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_acosh<_bz_typename P_expr1::T_numtype> > >
-acosh(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_acosh<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_acosh<int> > >
-acosh(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_acosh<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * asin
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_asin<T_numtype1> > >
-asin(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_asin<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_asin<_bz_typename P_expr1::T_numtype> > >
-asin(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_asin<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_asin<int> > >
-asin(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_asin<int> >(d1);
-}
-
-
-/****************************************************************************
- * asinh
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_asinh<T_numtype1> > >
-asinh(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_asinh<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_asinh<_bz_typename P_expr1::T_numtype> > >
-asinh(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_asinh<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_asinh<int> > >
-asinh(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_asinh<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * atan
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_atan<T_numtype1> > >
-atan(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_atan<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_atan<_bz_typename P_expr1::T_numtype> > >
-atan(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_atan<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_atan<int> > >
-atan(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_atan<int> >(d1);
-}
-
-
-/****************************************************************************
- * atanh
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_atanh<T_numtype1> > >
-atanh(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_atanh<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_atanh<_bz_typename P_expr1::T_numtype> > >
-atanh(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_atanh<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_atanh<int> > >
-atanh(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_atanh<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * atan2
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<T_numtype1,T_numtype2> > >
-atan2(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-atan2(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_atan2<T_numtype1,int> > >
-atan2(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_atan2<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_atan2<T_numtype1,float> > >
-atan2(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_atan2<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_atan2<T_numtype1,double> > >
-atan2(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_atan2<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_atan2<T_numtype1,long double> > >
-atan2(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_atan2<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_atan2<T_numtype1,complex<T2> > > >
-atan2(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_atan2<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-atan2(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-atan2(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,int> > >
-atan2(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,float> > >
-atan2(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,double> > >
-atan2(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,long double> > >
-atan2(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-atan2(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_atan2<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<int,T_numtype2> > >
-atan2(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<int,_bz_typename P_expr2::T_numtype> > >
-atan2(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_atan2<int,int> > >
-atan2(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_atan2<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_atan2<int,float> > >
-atan2(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_atan2<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_atan2<int,double> > >
-atan2(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_atan2<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_atan2<int,long double> > >
-atan2(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_atan2<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_atan2<int,complex<T2> > > >
-atan2(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_atan2<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<float,T_numtype2> > >
-atan2(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<float,_bz_typename P_expr2::T_numtype> > >
-atan2(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_atan2<float,int> > >
-atan2(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_atan2<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<double,T_numtype2> > >
-atan2(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<double,_bz_typename P_expr2::T_numtype> > >
-atan2(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_atan2<double,int> > >
-atan2(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_atan2<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<long double,T_numtype2> > >
-atan2(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<long double,_bz_typename P_expr2::T_numtype> > >
-atan2(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_atan2<long double,int> > >
-atan2(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_atan2<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<complex<T1> ,T_numtype2> > >
-atan2(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_atan2<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-atan2(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_atan2<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_atan2<complex<T1> ,int> > >
-atan2(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_atan2<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-
-/****************************************************************************
- * _class
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz__class<T_numtype1> > >
-_class(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz__class<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz__class<_bz_typename P_expr1::T_numtype> > >
-_class(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz__class<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz__class<int> > >
-_class(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz__class<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * cbrt
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_cbrt<T_numtype1> > >
-cbrt(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_cbrt<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_cbrt<_bz_typename P_expr1::T_numtype> > >
-cbrt(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_cbrt<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_cbrt<int> > >
-cbrt(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_cbrt<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * ceil
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_ceil<T_numtype1> > >
-ceil(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_ceil<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_ceil<_bz_typename P_expr1::T_numtype> > >
-ceil(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_ceil<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_ceil<int> > >
-ceil(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_ceil<int> >(d1);
-}
-
-
-/****************************************************************************
- * cexp
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_cexp<T_numtype1> > >
-cexp(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_cexp<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_cexp<_bz_typename P_expr1::T_numtype> > >
-cexp(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_cexp<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_cexp<int> > >
-cexp(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_cexp<int> >(d1);
-}
-
-
-/****************************************************************************
- * cos
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_cos<T_numtype1> > >
-cos(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_cos<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_cos<_bz_typename P_expr1::T_numtype> > >
-cos(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_cos<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_cos<int> > >
-cos(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_cos<int> >(d1);
-}
-
-
-/****************************************************************************
- * cosh
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_cosh<T_numtype1> > >
-cosh(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_cosh<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_cosh<_bz_typename P_expr1::T_numtype> > >
-cosh(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_cosh<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_cosh<int> > >
-cosh(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_cosh<int> >(d1);
-}
-
-
-/****************************************************************************
- * copysign
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<T_numtype1,T_numtype2> > >
-copysign(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-copysign(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_copysign<T_numtype1,int> > >
-copysign(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_copysign<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_copysign<T_numtype1,float> > >
-copysign(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_copysign<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_copysign<T_numtype1,double> > >
-copysign(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_copysign<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_copysign<T_numtype1,long double> > >
-copysign(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_copysign<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_copysign<T_numtype1,complex<T2> > > >
-copysign(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_copysign<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-copysign(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-copysign(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,int> > >
-copysign(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,float> > >
-copysign(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,double> > >
-copysign(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,long double> > >
-copysign(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-copysign(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_copysign<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<int,T_numtype2> > >
-copysign(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<int,_bz_typename P_expr2::T_numtype> > >
-copysign(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_copysign<int,int> > >
-copysign(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_copysign<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_copysign<int,float> > >
-copysign(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_copysign<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_copysign<int,double> > >
-copysign(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_copysign<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_copysign<int,long double> > >
-copysign(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_copysign<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_copysign<int,complex<T2> > > >
-copysign(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_copysign<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<float,T_numtype2> > >
-copysign(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<float,_bz_typename P_expr2::T_numtype> > >
-copysign(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_copysign<float,int> > >
-copysign(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_copysign<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<double,T_numtype2> > >
-copysign(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<double,_bz_typename P_expr2::T_numtype> > >
-copysign(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_copysign<double,int> > >
-copysign(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_copysign<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<long double,T_numtype2> > >
-copysign(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<long double,_bz_typename P_expr2::T_numtype> > >
-copysign(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_copysign<long double,int> > >
-copysign(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_copysign<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<complex<T1> ,T_numtype2> > >
-copysign(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_copysign<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-copysign(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_copysign<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_copysign<complex<T1> ,int> > >
-copysign(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_copysign<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#endif
-
-/****************************************************************************
- * csqrt
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_csqrt<T_numtype1> > >
-csqrt(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_csqrt<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_csqrt<_bz_typename P_expr1::T_numtype> > >
-csqrt(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_csqrt<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_csqrt<int> > >
-csqrt(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_csqrt<int> >(d1);
-}
-
-
-/****************************************************************************
- * drem
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<T_numtype1,T_numtype2> > >
-drem(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-drem(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_drem<T_numtype1,int> > >
-drem(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_drem<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_drem<T_numtype1,float> > >
-drem(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_drem<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_drem<T_numtype1,double> > >
-drem(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_drem<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_drem<T_numtype1,long double> > >
-drem(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_drem<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_drem<T_numtype1,complex<T2> > > >
-drem(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_drem<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-drem(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-drem(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,int> > >
-drem(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,float> > >
-drem(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,double> > >
-drem(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,long double> > >
-drem(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_drem<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_drem<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-drem(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_drem<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<int,T_numtype2> > >
-drem(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<int,_bz_typename P_expr2::T_numtype> > >
-drem(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_drem<int,int> > >
-drem(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_drem<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_drem<int,float> > >
-drem(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_drem<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_drem<int,double> > >
-drem(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_drem<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_drem<int,long double> > >
-drem(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_drem<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_drem<int,complex<T2> > > >
-drem(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_drem<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<float,T_numtype2> > >
-drem(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<float,_bz_typename P_expr2::T_numtype> > >
-drem(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_drem<float,int> > >
-drem(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_drem<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<double,T_numtype2> > >
-drem(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<double,_bz_typename P_expr2::T_numtype> > >
-drem(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_drem<double,int> > >
-drem(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_drem<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<long double,T_numtype2> > >
-drem(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<long double,_bz_typename P_expr2::T_numtype> > >
-drem(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_drem<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_drem<long double,int> > >
-drem(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_drem<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<complex<T1> ,T_numtype2> > >
-drem(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_drem<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_drem<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-drem(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_drem<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_drem<complex<T1> ,int> > >
-drem(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_drem<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#endif
-
-/****************************************************************************
- * exp
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_exp<T_numtype1> > >
-exp(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_exp<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_exp<_bz_typename P_expr1::T_numtype> > >
-exp(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_exp<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_exp<int> > >
-exp(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_exp<int> >(d1);
-}
-
-
-/****************************************************************************
- * expm1
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_expm1<T_numtype1> > >
-expm1(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_expm1<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_expm1<_bz_typename P_expr1::T_numtype> > >
-expm1(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_expm1<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_expm1<int> > >
-expm1(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_expm1<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * erf
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_erf<T_numtype1> > >
-erf(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_erf<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_erf<_bz_typename P_expr1::T_numtype> > >
-erf(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_erf<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_erf<int> > >
-erf(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_erf<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * erfc
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_erfc<T_numtype1> > >
-erfc(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_erfc<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_erfc<_bz_typename P_expr1::T_numtype> > >
-erfc(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_erfc<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_erfc<int> > >
-erfc(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_erfc<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * fabs
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_abs<T_numtype1> > >
-fabs(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_abs<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_abs<_bz_typename P_expr1::T_numtype> > >
-fabs(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_abs<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_abs<int> > >
-fabs(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_abs<int> >(d1);
-}
-
-
-/****************************************************************************
- * floor
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_floor<T_numtype1> > >
-floor(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_floor<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_floor<_bz_typename P_expr1::T_numtype> > >
-floor(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_floor<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_floor<int> > >
-floor(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_floor<int> >(d1);
-}
-
-
-/****************************************************************************
- * fmod
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<T_numtype1,T_numtype2> > >
-fmod(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-fmod(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_fmod<T_numtype1,int> > >
-fmod(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_fmod<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_fmod<T_numtype1,float> > >
-fmod(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_fmod<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_fmod<T_numtype1,double> > >
-fmod(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_fmod<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_fmod<T_numtype1,long double> > >
-fmod(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_fmod<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_fmod<T_numtype1,complex<T2> > > >
-fmod(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_fmod<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-fmod(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-fmod(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,int> > >
-fmod(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,float> > >
-fmod(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,double> > >
-fmod(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,long double> > >
-fmod(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-fmod(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_fmod<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<int,T_numtype2> > >
-fmod(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<int,_bz_typename P_expr2::T_numtype> > >
-fmod(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_fmod<int,int> > >
-fmod(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_fmod<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_fmod<int,float> > >
-fmod(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_fmod<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_fmod<int,double> > >
-fmod(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_fmod<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_fmod<int,long double> > >
-fmod(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_fmod<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_fmod<int,complex<T2> > > >
-fmod(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_fmod<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<float,T_numtype2> > >
-fmod(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<float,_bz_typename P_expr2::T_numtype> > >
-fmod(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_fmod<float,int> > >
-fmod(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_fmod<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<double,T_numtype2> > >
-fmod(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<double,_bz_typename P_expr2::T_numtype> > >
-fmod(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_fmod<double,int> > >
-fmod(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_fmod<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<long double,T_numtype2> > >
-fmod(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<long double,_bz_typename P_expr2::T_numtype> > >
-fmod(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_fmod<long double,int> > >
-fmod(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_fmod<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<complex<T1> ,T_numtype2> > >
-fmod(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_fmod<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-fmod(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_fmod<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_fmod<complex<T1> ,int> > >
-fmod(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_fmod<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#endif
-
-/****************************************************************************
- * hypot
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<T_numtype1,T_numtype2> > >
-hypot(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-hypot(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_hypot<T_numtype1,int> > >
-hypot(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_hypot<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_hypot<T_numtype1,float> > >
-hypot(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_hypot<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_hypot<T_numtype1,double> > >
-hypot(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_hypot<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_hypot<T_numtype1,long double> > >
-hypot(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_hypot<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_hypot<T_numtype1,complex<T2> > > >
-hypot(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_hypot<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-hypot(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-hypot(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,int> > >
-hypot(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,float> > >
-hypot(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,double> > >
-hypot(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,long double> > >
-hypot(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-hypot(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_hypot<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<int,T_numtype2> > >
-hypot(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<int,_bz_typename P_expr2::T_numtype> > >
-hypot(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_hypot<int,int> > >
-hypot(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_hypot<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_hypot<int,float> > >
-hypot(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_hypot<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_hypot<int,double> > >
-hypot(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_hypot<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_hypot<int,long double> > >
-hypot(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_hypot<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_hypot<int,complex<T2> > > >
-hypot(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_hypot<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<float,T_numtype2> > >
-hypot(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<float,_bz_typename P_expr2::T_numtype> > >
-hypot(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_hypot<float,int> > >
-hypot(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_hypot<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<double,T_numtype2> > >
-hypot(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<double,_bz_typename P_expr2::T_numtype> > >
-hypot(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_hypot<double,int> > >
-hypot(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_hypot<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<long double,T_numtype2> > >
-hypot(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<long double,_bz_typename P_expr2::T_numtype> > >
-hypot(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_hypot<long double,int> > >
-hypot(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_hypot<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<complex<T1> ,T_numtype2> > >
-hypot(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_hypot<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-hypot(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_hypot<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_hypot<complex<T1> ,int> > >
-hypot(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_hypot<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#endif
-
-/****************************************************************************
- * ilogb
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_ilogb<T_numtype1> > >
-ilogb(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_ilogb<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_ilogb<_bz_typename P_expr1::T_numtype> > >
-ilogb(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_ilogb<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_ilogb<int> > >
-ilogb(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_ilogb<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * isnan
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_isnan<T_numtype1> > >
-isnan(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_isnan<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_isnan<_bz_typename P_expr1::T_numtype> > >
-isnan(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_isnan<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_isnan<int> > >
-isnan(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_isnan<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * itrunc
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_itrunc<T_numtype1> > >
-itrunc(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_itrunc<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_itrunc<_bz_typename P_expr1::T_numtype> > >
-itrunc(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_itrunc<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_itrunc<int> > >
-itrunc(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_itrunc<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * j0
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_j0<T_numtype1> > >
-j0(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_j0<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_j0<_bz_typename P_expr1::T_numtype> > >
-j0(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_j0<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_j0<int> > >
-j0(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_j0<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * j1
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_j1<T_numtype1> > >
-j1(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_j1<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_j1<_bz_typename P_expr1::T_numtype> > >
-j1(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_j1<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_j1<int> > >
-j1(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_j1<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * lgamma
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_lgamma<T_numtype1> > >
-lgamma(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_lgamma<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_lgamma<_bz_typename P_expr1::T_numtype> > >
-lgamma(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_lgamma<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_lgamma<int> > >
-lgamma(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_lgamma<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * log
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_log<T_numtype1> > >
-log(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_log<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_log<_bz_typename P_expr1::T_numtype> > >
-log(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_log<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_log<int> > >
-log(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_log<int> >(d1);
-}
-
-
-/****************************************************************************
- * logb
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_logb<T_numtype1> > >
-logb(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_logb<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_logb<_bz_typename P_expr1::T_numtype> > >
-logb(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_logb<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_logb<int> > >
-logb(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_logb<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * log1p
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_log1p<T_numtype1> > >
-log1p(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_log1p<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_log1p<_bz_typename P_expr1::T_numtype> > >
-log1p(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_log1p<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_log1p<int> > >
-log1p(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_log1p<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * log10
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_log10<T_numtype1> > >
-log10(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_log10<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_log10<_bz_typename P_expr1::T_numtype> > >
-log10(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_log10<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_log10<int> > >
-log10(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_log10<int> >(d1);
-}
-
-
-/****************************************************************************
- * nearest
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_nearest<T_numtype1> > >
-nearest(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_nearest<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_nearest<_bz_typename P_expr1::T_numtype> > >
-nearest(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_nearest<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_nearest<int> > >
-nearest(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_nearest<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * nextafter
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<T_numtype1,T_numtype2> > >
-nextafter(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-nextafter(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<T_numtype1,int> > >
-nextafter(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_nextafter<T_numtype1,float> > >
-nextafter(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_nextafter<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_nextafter<T_numtype1,double> > >
-nextafter(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_nextafter<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_nextafter<T_numtype1,long double> > >
-nextafter(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_nextafter<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_nextafter<T_numtype1,complex<T2> > > >
-nextafter(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_nextafter<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-nextafter(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-nextafter(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,int> > >
-nextafter(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,float> > >
-nextafter(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,double> > >
-nextafter(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,long double> > >
-nextafter(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-nextafter(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_nextafter<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<int,T_numtype2> > >
-nextafter(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<int,_bz_typename P_expr2::T_numtype> > >
-nextafter(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<int,int> > >
-nextafter(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_nextafter<int,float> > >
-nextafter(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_nextafter<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_nextafter<int,double> > >
-nextafter(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_nextafter<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_nextafter<int,long double> > >
-nextafter(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_nextafter<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_nextafter<int,complex<T2> > > >
-nextafter(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_nextafter<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<float,T_numtype2> > >
-nextafter(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<float,_bz_typename P_expr2::T_numtype> > >
-nextafter(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<float,int> > >
-nextafter(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<double,T_numtype2> > >
-nextafter(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<double,_bz_typename P_expr2::T_numtype> > >
-nextafter(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<double,int> > >
-nextafter(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<long double,T_numtype2> > >
-nextafter(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<long double,_bz_typename P_expr2::T_numtype> > >
-nextafter(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<long double,int> > >
-nextafter(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_nextafter<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<complex<T1> ,T_numtype2> > >
-nextafter(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_nextafter<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-nextafter(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_nextafter<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_nextafter<complex<T1> ,int> > >
-nextafter(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_nextafter<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#endif
-
-/****************************************************************************
- * pow
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<T_numtype1,T_numtype2> > >
-pow(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-pow(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_pow<T_numtype1,int> > >
-pow(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_pow<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_pow<T_numtype1,float> > >
-pow(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_pow<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_pow<T_numtype1,double> > >
-pow(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_pow<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_pow<T_numtype1,long double> > >
-pow(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_pow<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_pow<T_numtype1,complex<T2> > > >
-pow(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_pow<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-pow(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-pow(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,int> > >
-pow(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,float> > >
-pow(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,double> > >
-pow(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,long double> > >
-pow(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_pow<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_pow<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-pow(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_pow<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<int,T_numtype2> > >
-pow(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<int,_bz_typename P_expr2::T_numtype> > >
-pow(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_pow<int,int> > >
-pow(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_pow<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_pow<int,float> > >
-pow(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_pow<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_pow<int,double> > >
-pow(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_pow<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_pow<int,long double> > >
-pow(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_pow<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_pow<int,complex<T2> > > >
-pow(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_pow<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<float,T_numtype2> > >
-pow(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<float,_bz_typename P_expr2::T_numtype> > >
-pow(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_pow<float,int> > >
-pow(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_pow<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<double,T_numtype2> > >
-pow(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<double,_bz_typename P_expr2::T_numtype> > >
-pow(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_pow<double,int> > >
-pow(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_pow<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<long double,T_numtype2> > >
-pow(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<long double,_bz_typename P_expr2::T_numtype> > >
-pow(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_pow<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_pow<long double,int> > >
-pow(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_pow<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<complex<T1> ,T_numtype2> > >
-pow(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_pow<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_pow<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-pow(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_pow<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_pow<complex<T1> ,int> > >
-pow(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_pow<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-
-/****************************************************************************
- * pow2
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow2<T_numtype1> > >
-pow2(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow2<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow2<_bz_typename P_expr1::T_numtype> > >
-pow2(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow2<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow2<int> > >
-pow2(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow2<int> >(d1);
-}
-
-
-/****************************************************************************
- * pow3
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow3<T_numtype1> > >
-pow3(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow3<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow3<_bz_typename P_expr1::T_numtype> > >
-pow3(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow3<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow3<int> > >
-pow3(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow3<int> >(d1);
-}
-
-
-/****************************************************************************
- * pow4
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow4<T_numtype1> > >
-pow4(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow4<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow4<_bz_typename P_expr1::T_numtype> > >
-pow4(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow4<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow4<int> > >
-pow4(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow4<int> >(d1);
-}
-
-
-/****************************************************************************
- * pow5
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow5<T_numtype1> > >
-pow5(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow5<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow5<_bz_typename P_expr1::T_numtype> > >
-pow5(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow5<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow5<int> > >
-pow5(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow5<int> >(d1);
-}
-
-
-/****************************************************************************
- * pow6
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow6<T_numtype1> > >
-pow6(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow6<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow6<_bz_typename P_expr1::T_numtype> > >
-pow6(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow6<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow6<int> > >
-pow6(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow6<int> >(d1);
-}
-
-
-/****************************************************************************
- * pow7
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow7<T_numtype1> > >
-pow7(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow7<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow7<_bz_typename P_expr1::T_numtype> > >
-pow7(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow7<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow7<int> > >
-pow7(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow7<int> >(d1);
-}
-
-
-/****************************************************************************
- * pow8
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow8<T_numtype1> > >
-pow8(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_pow8<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow8<_bz_typename P_expr1::T_numtype> > >
-pow8(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_pow8<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow8<int> > >
-pow8(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_pow8<int> >(d1);
-}
-
-
-/****************************************************************************
- * remainder
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<T_numtype1,T_numtype2> > >
-remainder(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-remainder(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_remainder<T_numtype1,int> > >
-remainder(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_remainder<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_remainder<T_numtype1,float> > >
-remainder(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_remainder<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_remainder<T_numtype1,double> > >
-remainder(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_remainder<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_remainder<T_numtype1,long double> > >
-remainder(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_remainder<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_remainder<T_numtype1,complex<T2> > > >
-remainder(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_remainder<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-remainder(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-remainder(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,int> > >
-remainder(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,float> > >
-remainder(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,double> > >
-remainder(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,long double> > >
-remainder(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-remainder(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_remainder<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<int,T_numtype2> > >
-remainder(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<int,_bz_typename P_expr2::T_numtype> > >
-remainder(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_remainder<int,int> > >
-remainder(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_remainder<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_remainder<int,float> > >
-remainder(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_remainder<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_remainder<int,double> > >
-remainder(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_remainder<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_remainder<int,long double> > >
-remainder(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_remainder<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_remainder<int,complex<T2> > > >
-remainder(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_remainder<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<float,T_numtype2> > >
-remainder(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<float,_bz_typename P_expr2::T_numtype> > >
-remainder(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_remainder<float,int> > >
-remainder(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_remainder<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<double,T_numtype2> > >
-remainder(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<double,_bz_typename P_expr2::T_numtype> > >
-remainder(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_remainder<double,int> > >
-remainder(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_remainder<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<long double,T_numtype2> > >
-remainder(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<long double,_bz_typename P_expr2::T_numtype> > >
-remainder(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_remainder<long double,int> > >
-remainder(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_remainder<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<complex<T1> ,T_numtype2> > >
-remainder(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_remainder<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-remainder(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_remainder<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_remainder<complex<T1> ,int> > >
-remainder(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_remainder<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#endif
-
-/****************************************************************************
- * rint
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_rint<T_numtype1> > >
-rint(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_rint<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_rint<_bz_typename P_expr1::T_numtype> > >
-rint(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_rint<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_rint<int> > >
-rint(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_rint<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * rsqrt
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_rsqrt<T_numtype1> > >
-rsqrt(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_rsqrt<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_rsqrt<_bz_typename P_expr1::T_numtype> > >
-rsqrt(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_rsqrt<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_rsqrt<int> > >
-rsqrt(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_rsqrt<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * scalb
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<T_numtype1,T_numtype2> > >
-scalb(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-scalb(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_scalb<T_numtype1,int> > >
-scalb(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_scalb<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_scalb<T_numtype1,float> > >
-scalb(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_scalb<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_scalb<T_numtype1,double> > >
-scalb(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_scalb<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_scalb<T_numtype1,long double> > >
-scalb(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_scalb<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_scalb<T_numtype1,complex<T2> > > >
-scalb(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_scalb<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-scalb(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-scalb(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,int> > >
-scalb(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,float> > >
-scalb(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,double> > >
-scalb(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,long double> > >
-scalb(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-scalb(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_scalb<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<int,T_numtype2> > >
-scalb(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<int,_bz_typename P_expr2::T_numtype> > >
-scalb(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_scalb<int,int> > >
-scalb(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_scalb<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_scalb<int,float> > >
-scalb(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_scalb<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_scalb<int,double> > >
-scalb(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_scalb<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_scalb<int,long double> > >
-scalb(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_scalb<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_scalb<int,complex<T2> > > >
-scalb(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_scalb<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<float,T_numtype2> > >
-scalb(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<float,_bz_typename P_expr2::T_numtype> > >
-scalb(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_scalb<float,int> > >
-scalb(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_scalb<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<double,T_numtype2> > >
-scalb(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<double,_bz_typename P_expr2::T_numtype> > >
-scalb(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_scalb<double,int> > >
-scalb(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_scalb<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<long double,T_numtype2> > >
-scalb(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<long double,_bz_typename P_expr2::T_numtype> > >
-scalb(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_scalb<long double,int> > >
-scalb(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_scalb<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<complex<T1> ,T_numtype2> > >
-scalb(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_scalb<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-scalb(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_scalb<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_scalb<complex<T1> ,int> > >
-scalb(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_scalb<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#endif
-
-/****************************************************************************
- * sin
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_sin<T_numtype1> > >
-sin(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_sin<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_sin<_bz_typename P_expr1::T_numtype> > >
-sin(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_sin<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_sin<int> > >
-sin(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_sin<int> >(d1);
-}
-
-
-/****************************************************************************
- * sinh
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_sinh<T_numtype1> > >
-sinh(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_sinh<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_sinh<_bz_typename P_expr1::T_numtype> > >
-sinh(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_sinh<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_sinh<int> > >
-sinh(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_sinh<int> >(d1);
-}
-
-
-/****************************************************************************
- * sqr
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_sqr<T_numtype1> > >
-sqr(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_sqr<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_sqr<_bz_typename P_expr1::T_numtype> > >
-sqr(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_sqr<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_sqr<int> > >
-sqr(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_sqr<int> >(d1);
-}
-
-
-/****************************************************************************
- * sqrt
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_sqrt<T_numtype1> > >
-sqrt(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_sqrt<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_sqrt<_bz_typename P_expr1::T_numtype> > >
-sqrt(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_sqrt<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_sqrt<int> > >
-sqrt(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_sqrt<int> >(d1);
-}
-
-
-/****************************************************************************
- * tan
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_tan<T_numtype1> > >
-tan(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_tan<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_tan<_bz_typename P_expr1::T_numtype> > >
-tan(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_tan<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_tan<int> > >
-tan(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_tan<int> >(d1);
-}
-
-
-/****************************************************************************
- * tanh
- ****************************************************************************/
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_tanh<T_numtype1> > >
-tanh(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_tanh<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_tanh<_bz_typename P_expr1::T_numtype> > >
-tanh(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_tanh<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_tanh<int> > >
-tanh(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_tanh<int> >(d1);
-}
-
-
-/****************************************************************************
- * uitrunc
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_uitrunc<T_numtype1> > >
-uitrunc(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_uitrunc<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_uitrunc<_bz_typename P_expr1::T_numtype> > >
-uitrunc(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_uitrunc<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_uitrunc<int> > >
-uitrunc(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_uitrunc<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * unordered
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class T_numtype1, int N_rank1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<T_numtype1,T_numtype2> > >
-unordered(const Array<T_numtype1, N_rank1>& d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<T_numtype1,T_numtype2> >(d1.begin(), d2.begin());
-}
-
-template<class T_numtype1, int N_rank1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<T_numtype1,_bz_typename P_expr2::T_numtype> > >
-unordered(const Array<T_numtype1, N_rank1>& d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<T_numtype1,_bz_typename P_expr2::T_numtype> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_unordered<T_numtype1,int> > >
-unordered(const Array<T_numtype1, N_rank1>& d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, IndexPlaceholder<N_index2>,
-    _bz_unordered<T_numtype1,int> >(d1.begin(), d2);
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_unordered<T_numtype1,float> > >
-unordered(const Array<T_numtype1, N_rank1>& d1, float d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<float>,
-    _bz_unordered<T_numtype1,float> >(d1.begin(), _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_unordered<T_numtype1,double> > >
-unordered(const Array<T_numtype1, N_rank1>& d1, double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<double>,
-    _bz_unordered<T_numtype1,double> >(d1.begin(), _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_unordered<T_numtype1,long double> > >
-unordered(const Array<T_numtype1, N_rank1>& d1, long double d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<long double>,
-    _bz_unordered<T_numtype1,long double> >(d1.begin(), _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T_numtype1, int N_rank1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_unordered<T_numtype1,complex<T2> > > >
-unordered(const Array<T_numtype1, N_rank1>& d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<ArrayIterator<T_numtype1, N_rank1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_unordered<T_numtype1,complex<T2> > >(d1.begin(), _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class P_expr1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,T_numtype2> > >
-unordered(_bz_ArrayExpr<P_expr1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,T_numtype2> >(d1, d2.begin());
-}
-
-template<class P_expr1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> > >
-unordered(_bz_ArrayExpr<P_expr1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<class P_expr1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,int> > >
-unordered(_bz_ArrayExpr<P_expr1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, IndexPlaceholder<N_index2>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,int> >(d1, d2);
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,float> > >
-unordered(_bz_ArrayExpr<P_expr1> d1, float d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<float>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,double> > >
-unordered(_bz_ArrayExpr<P_expr1> d1, double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<double>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,long double> > >
-unordered(_bz_ArrayExpr<P_expr1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<long double>,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,complex<T2> > > >
-unordered(_bz_ArrayExpr<P_expr1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExpr<P_expr1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_unordered<_bz_typename P_expr1::T_numtype,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<int N_index1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<int,T_numtype2> > >
-unordered(IndexPlaceholder<N_index1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<int,T_numtype2> >(d1, d2.begin());
-}
-
-template<int N_index1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<int,_bz_typename P_expr2::T_numtype> > >
-unordered(IndexPlaceholder<N_index1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<int,_bz_typename P_expr2::T_numtype> >(d1, d2);
-}
-
-template<int N_index1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_unordered<int,int> > >
-unordered(IndexPlaceholder<N_index1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, IndexPlaceholder<N_index2>,
-    _bz_unordered<int,int> >(d1, d2);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_unordered<int,float> > >
-unordered(IndexPlaceholder<N_index1> d1, float d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<float>,
-    _bz_unordered<int,float> >(d1, _bz_ArrayExprConstant<float>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_unordered<int,double> > >
-unordered(IndexPlaceholder<N_index1> d1, double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<double>,
-    _bz_unordered<int,double> >(d1, _bz_ArrayExprConstant<double>(d2));
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_unordered<int,long double> > >
-unordered(IndexPlaceholder<N_index1> d1, long double d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<long double>,
-    _bz_unordered<int,long double> >(d1, _bz_ArrayExprConstant<long double>(d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<int N_index1, class T2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_unordered<int,complex<T2> > > >
-unordered(IndexPlaceholder<N_index1> d1, complex<T2> d2)
-{
-    return _bz_ArrayExprOp<IndexPlaceholder<N_index1>, _bz_ArrayExprConstant<complex<T2> > ,
-    _bz_unordered<int,complex<T2> > >(d1, _bz_ArrayExprConstant<complex<T2> > (d2));
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<float,T_numtype2> > >
-unordered(float d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<float,T_numtype2> >(_bz_ArrayExprConstant<float>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<float,_bz_typename P_expr2::T_numtype> > >
-unordered(float d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<float,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_unordered<float,int> > >
-unordered(float d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<float>, IndexPlaceholder<N_index2>,
-    _bz_unordered<float,int> >(_bz_ArrayExprConstant<float>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<double,T_numtype2> > >
-unordered(double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<double,T_numtype2> >(_bz_ArrayExprConstant<double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<double,_bz_typename P_expr2::T_numtype> > >
-unordered(double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_unordered<double,int> > >
-unordered(double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<double>, IndexPlaceholder<N_index2>,
-    _bz_unordered<double,int> >(_bz_ArrayExprConstant<double>(d1), d2);
-}
-
-template<class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<long double,T_numtype2> > >
-unordered(long double d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<long double,T_numtype2> >(_bz_ArrayExprConstant<long double>(d1), d2.begin());
-}
-
-template<class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<long double,_bz_typename P_expr2::T_numtype> > >
-unordered(long double d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<long double,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-template<int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_unordered<long double,int> > >
-unordered(long double d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<long double>, IndexPlaceholder<N_index2>,
-    _bz_unordered<long double,int> >(_bz_ArrayExprConstant<long double>(d1), d2);
-}
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class T_numtype2, int N_rank2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<complex<T1> ,T_numtype2> > >
-unordered(complex<T1> d1, const Array<T_numtype2, N_rank2>& d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , ArrayIterator<T_numtype2, N_rank2>,
-    _bz_unordered<complex<T1> ,T_numtype2> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2.begin());
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, class P_expr2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<complex<T1> ,_bz_typename P_expr2::T_numtype> > >
-unordered(complex<T1> d1, _bz_ArrayExpr<P_expr2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , _bz_ArrayExpr<P_expr2>,
-    _bz_unordered<complex<T1> ,_bz_typename P_expr2::T_numtype> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-template<class T1, int N_index2>
-inline
-_bz_ArrayExpr<_bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_unordered<complex<T1> ,int> > >
-unordered(complex<T1> d1, IndexPlaceholder<N_index2> d2)
-{
-    return _bz_ArrayExprOp<_bz_ArrayExprConstant<complex<T1> > , IndexPlaceholder<N_index2>,
-    _bz_unordered<complex<T1> ,int> >(_bz_ArrayExprConstant<complex<T1> > (d1), d2);
-}
-
-#endif // BZ_HAVE_COMPLEX
-
-#endif
-
-/****************************************************************************
- * y0
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_y0<T_numtype1> > >
-y0(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_y0<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_y0<_bz_typename P_expr1::T_numtype> > >
-y0(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_y0<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_y0<int> > >
-y0(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_y0<int> >(d1);
-}
-
-#endif
-
-/****************************************************************************
- * y1
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class T_numtype1, int N_rank1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_y1<T_numtype1> > >
-y1(const Array<T_numtype1, N_rank1>& d1)
-{
-    return _bz_ArrayExprUnaryOp<ArrayIterator<T_numtype1, N_rank1>,
-    _bz_y1<T_numtype1> >(d1.begin());
-}
-
-template<class P_expr1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_y1<_bz_typename P_expr1::T_numtype> > >
-y1(_bz_ArrayExpr<P_expr1> d1)
-{
-    return _bz_ArrayExprUnaryOp<_bz_ArrayExpr<P_expr1>,
-    _bz_y1<_bz_typename P_expr1::T_numtype> >(d1);
-}
-
-template<int N_index1>
-inline
-_bz_ArrayExpr<_bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_y1<int> > >
-y1(IndexPlaceholder<N_index1> d1)
-{
-    return _bz_ArrayExprUnaryOp<IndexPlaceholder<N_index1>,
-    _bz_y1<int> >(d1);
-}
-
-#endif
-
-BZ_NAMESPACE_END
-
-#endif
diff --git a/weave/blitz-20001213/blitz/array/where.h b/weave/blitz-20001213/blitz/array/where.h
deleted file mode 100644
index 85407a9..0000000
--- a/weave/blitz-20001213/blitz/array/where.h
+++ /dev/null
@@ -1,207 +0,0 @@
-#ifndef BZ_ARRAYWHERE_H
-#define BZ_ARRAYWHERE_H
-
-#ifndef BZ_ARRAYEXPR_H
- #error <blitz/array/where.h> must be included via <blitz/array/expr.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr1, class P_expr2, class P_expr3>
-class _bz_ArrayWhere {
-
-public:
-    typedef P_expr1 T_expr1;
-    typedef P_expr2 T_expr2;
-    typedef P_expr3 T_expr3;
-    typedef _bz_typename T_expr2::T_numtype T_numtype2;
-    typedef _bz_typename T_expr3::T_numtype T_numtype3;
-    typedef BZ_PROMOTE(T_numtype2, T_numtype3) T_numtype;
-    typedef T_expr1 T_ctorArg1;
-    typedef T_expr2 T_ctorArg2;
-    typedef T_expr3 T_ctorArg3;
-
-    enum { numArrayOperands = BZ_ENUM_CAST(P_expr1::numArrayOperands)
-                            + BZ_ENUM_CAST(P_expr2::numArrayOperands)
-                            + BZ_ENUM_CAST(P_expr3::numArrayOperands),
-           numIndexPlaceholders = BZ_ENUM_CAST(P_expr1::numIndexPlaceholders)
-                            + BZ_ENUM_CAST(P_expr2::numIndexPlaceholders)
-                            + BZ_ENUM_CAST(P_expr3::numIndexPlaceholders),
-           rank = _bz_meta_max<_bz_meta_max<P_expr1::rank,P_expr2::rank>::max,
-                            P_expr3::rank>::max
-    };
-
-    _bz_ArrayWhere(const _bz_ArrayWhere<T_expr1,T_expr2,T_expr3>& a)
-      : iter1_(a.iter1_), iter2_(a.iter2_), iter3_(a.iter3_)
-    { }
-
-    template<class T1, class T2, class T3>
-    _bz_ArrayWhere(BZ_ETPARM(T1) a, BZ_ETPARM(T2) b, BZ_ETPARM(T3) c)
-      : iter1_(a), iter2_(b), iter3_(c)
-    { }
-
-    T_numtype operator*()
-    { return (*iter1_) ? (*iter2_) : (*iter3_); }
-
-    template<int N_rank>
-    T_numtype operator()(const TinyVector<int, N_rank>& i)
-    { return iter1_(i) ? iter2_(i) : iter3_(i); }
-
-    int ascending(int rank)
-    {
-        return bounds::compute_ascending(rank, bounds::compute_ascending(
-          rank, iter1_.ascending(rank), iter2_.ascending(rank)),
-          iter3_.ascending(rank));
-    }
-
-    int ordering(int rank)
-    {
-        return bounds::compute_ordering(rank, bounds::compute_ordering(
-          rank, iter1_.ordering(rank), iter2_.ordering(rank)),
-          iter3_.ordering(rank));
-    }
-
-    int lbound(int rank)
-    {
-        return bounds::compute_lbound(rank, bounds::compute_lbound(
-          rank, iter1_.lbound(rank), iter2_.lbound(rank)), 
-          iter3_.lbound(rank));
-    }
-   
-    int ubound(int rank)
-    {
-        return bounds::compute_ubound(rank, bounds::compute_ubound(
-          rank, iter1_.ubound(rank), iter2_.ubound(rank)), 
-          iter3_.ubound(rank));
-    } 
-
-    void push(int position)
-    {
-        iter1_.push(position);
-        iter2_.push(position);
-        iter3_.push(position);
-    }
-
-    void pop(int position)
-    {
-        iter1_.pop(position);
-        iter2_.pop(position);
-        iter3_.pop(position);
-    }
-
-    void advance()
-    {
-        iter1_.advance();
-        iter2_.advance();
-        iter3_.advance();
-    }
-
-    void advance(int n)
-    {
-        iter1_.advance(n);
-        iter2_.advance(n);
-        iter3_.advance(n);
-    }
-
-    void loadStride(int rank)
-    {
-        iter1_.loadStride(rank);
-        iter2_.loadStride(rank);
-        iter3_.loadStride(rank);
-    }
-
-    _bz_bool isUnitStride(int rank) const
-    { 
-        return iter1_.isUnitStride(rank) 
-            && iter2_.isUnitStride(rank) 
-            && iter3_.isUnitStride(rank);
-    }
-
-    void advanceUnitStride()
-    {
-        iter1_.advanceUnitStride();
-        iter2_.advanceUnitStride();
-        iter3_.advanceUnitStride();
-    }
-
-    _bz_bool canCollapse(int outerLoopRank, int innerLoopRank) const
-    {
-        // BZ_DEBUG_MESSAGE("_bz_ArrayExprOp<>::canCollapse");
-        return iter1_.canCollapse(outerLoopRank, innerLoopRank)
-            && iter2_.canCollapse(outerLoopRank, innerLoopRank)
-            && iter3_.canCollapse(outerLoopRank, innerLoopRank);
-    }
-
-    template<int N_rank>
-    void moveTo(const TinyVector<int,N_rank>& i)
-    {
-        iter1_.moveTo(i);
-        iter2_.moveTo(i);
-        iter3_.moveTo(i);
-    }
-
-    T_numtype operator[](int i)
-    { return iter1_[i] ? iter2_[i] : iter3_[i]; }
-
-    T_numtype fastRead(int i)
-    { return iter1_.fastRead(i) ? iter2_.fastRead(i) : iter3_.fastRead(i); }
-
-    int suggestStride(int rank) const
-    {
-        int stride1 = iter1_.suggestStride(rank);
-        int stride2 = iter2_.suggestStride(rank);
-        int stride3 = iter3_.suggestStride(rank);
-        return minmax::max(minmax::max(stride1,stride2),stride3);
-    }
-
-    _bz_bool isStride(int rank, int stride) const
-    {
-        return iter1_.isStride(rank,stride) 
-            && iter2_.isStride(rank,stride)
-            && iter3_.isStride(rank,stride);
-    }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    {
-        str += "where(";
-        iter1_.prettyPrint(str,format);
-        str += ",";
-        iter2_.prettyPrint(str,format);
-        str += ",";
-        iter3_.prettyPrint(str,format);
-        str += ")";
-    }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape& shape)
-    { 
-        int t1 = iter1_.shapeCheck(shape);
-        int t2 = iter2_.shapeCheck(shape);
-        int t3 = iter3_.shapeCheck(shape);
-
-        return t1 && t2 && t3;
-    }
-
-private:
-    _bz_ArrayWhere() { }
-
-    T_expr1 iter1_;
-    T_expr2 iter2_;
-    T_expr3 iter3_;
-};
-
-template<class T1, class T2, class T3>
-inline
-_bz_ArrayExpr<_bz_ArrayWhere<_bz_typename asExpr<T1>::T_expr,
-    _bz_typename asExpr<T2>::T_expr, _bz_typename asExpr<T3>::T_expr> >
-where(const T1& a, const T2& b, const T3& c)
-{
-    return _bz_ArrayExpr<_bz_ArrayWhere<_bz_typename asExpr<T1>::T_expr,
-       _bz_typename asExpr<T2>::T_expr, 
-       _bz_typename asExpr<T3>::T_expr> >(a,b,c);
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYWHERE_H
-
diff --git a/weave/blitz-20001213/blitz/array/zip.h b/weave/blitz-20001213/blitz/array/zip.h
deleted file mode 100644
index 1cb349a..0000000
--- a/weave/blitz-20001213/blitz/array/zip.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef BZ_ARRAYZIP_H
-#define BZ_ARRAYZIP_H
-
-#ifndef BZ_ARRAY_H
- #error <blitz/array/zip.h> must be included via <blitz/array.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_component, class T1, class T2>
-struct Zip2 {
-    typedef P_component T_numtype;
-
-    static inline T_numtype apply(T1 a, T2 b)
-    { return T_numtype(a,b); }
-
-    template<class T_left, class T_right>
-    static inline void prettyPrint(string& str,
-        prettyPrintFormat& format, const T_left& t1,
-        const T_right& t2)
-    {
-        str += "zip(";
-        t1.prettyPrint(str, format);
-        str += ",";
-        t2.prettyPrint(str, format);
-        str += ")";
-    }
-};
-
-template<class T_component, class T1, class T2>
-inline _bz_ArrayExpr<_bz_ArrayExprOp<_bz_typename asExpr<T1>::T_expr, 
-    _bz_typename asExpr<T2>::T_expr, Zip2<T_component, 
-    _bz_typename asExpr<T1>::T_expr::T_numtype,
-    _bz_typename asExpr<T2>::T_expr::T_numtype> > >
-zip(const T1& a, const T2& b, T_component)
-{
-    return _bz_ArrayExpr<_bz_ArrayExprOp<_bz_typename asExpr<T1>::T_expr,
-        _bz_typename asExpr<T2>::T_expr, Zip2<T_component, 
-        _bz_typename asExpr<T1>::T_expr::T_numtype,
-        _bz_typename asExpr<T2>::T_expr::T_numtype> > >(a,b);
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ARRAYZIP_H
-
diff --git a/weave/blitz-20001213/blitz/bench.cc b/weave/blitz-20001213/blitz/bench.cc
deleted file mode 100644
index 137503e..0000000
--- a/weave/blitz-20001213/blitz/bench.cc
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_BENCH_CC
-#define BZ_BENCH_CC
-
-#ifndef BZ_BENCH_H
- #error <blitz/bench.cc> must be included via <blitz/bench.h>
-#endif
-
-#ifdef BZ_HAVE_STD
- #include <fstream>
-#else
- #include <fstream.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_parameter>
-Benchmark<P_parameter>::Benchmark(unsigned numImplementations)
-{
-    state_ = uninitialized;
-    numImplementations_ = numImplementations;
-    numStoredImplementations_ = 0;
-    implementations_ = new BenchmarkImplementation<P_parameter>* [numImplementations_];
-    rates_.resize(numImplementations, numParameterSettings());
-    Mflops_.resize(numImplementations, numParameterSettings());
-}
-
-template<class P_parameter>
-Benchmark<P_parameter>::~Benchmark()
-{
-    delete [] implementations_;
-}
-
-template<class P_parameter>
-void Benchmark<P_parameter>::addImplementation(
-    BenchmarkImplementation<P_parameter> * implementation)
-{
-    BZPRECONDITION(state_ == uninitialized);
-    BZPRECONDITION(numStoredImplementations_ < numImplementations_);
-
-    implementations_[numStoredImplementations_++] = implementation;
-
-    if (numStoredImplementations_ == numImplementations_)
-        state_ = initialized;
-}
-
-template<class P_parameter>
-void Benchmark<P_parameter>::run(ostream& log)
-{
-    BZPRECONDITION(state_ == initialized);
-    state_ = running;
-
-    Timer t;
-
-    for (unsigned j=0; j < numImplementations_; ++j)
-    {
-        for (unsigned i=0; i < numParameterSettings(); ++i)
-        {
-            log  << setw(20) << implementations_[j]->implementationName()
-                 << " " << setw(8) << getParameterSetting(i) << "  ";
-            log.flush();
-
-            implementations_[j]->initialize(getParameterSetting(i));
-            implementations_[j]->tickle();
-
-            unsigned long iterations = getIterationSetting(i);
-
-            t.start();
-            implementations_[j]->run(iterations);
-            t.stop();
-            double tm = t.elapsedSeconds();
-
-            t.start();
-            implementations_[j]->runOverhead(iterations);
-            t.stop();
-            double tmOverhead = t.elapsedSeconds();
-
-            rates_(j,i) = iterations / (tm - tmOverhead);
-            Mflops_(j,i) = rates_(j,i) 
-                * implementations_[j]->flopsPerIteration() / 1.0e+6;
-
-            log << setw(10) << (rates_(j,i)/1.0e+6) << " Mops/s ";
-
-            if (implementations_[j]->flopsPerIteration() != 0)
-            {
-                log << "[" << setw(7) << Mflops_(j,i) << " Mflops]";
-            }
-
-            log << endl;
-            log.flush();
-
-            implementations_[j]->done();
-        }
-    }
-
-    state_ = done;
-}
-
-template<class P_parameter>
-double Benchmark<P_parameter>::getMflops(unsigned implementation, 
-    unsigned setting) const
-{
-    BZPRECONDITION(state_ == done);
-    BZPRECONDITION(implementation < numImplementations_);
-    BZPRECONDITION(setting < numParameterSettings());
-
-    return Mflops_(implementation, setting);
-}
-
-template<class P_parameter>
-double Benchmark<P_parameter>::getRate(unsigned implementation,  
-    unsigned setting) const
-{
-    BZPRECONDITION(state_ == done);
-    BZPRECONDITION(implementation < numImplementations_);
-    BZPRECONDITION(setting < numParameterSettings());
-
-    return rates_(implementation, setting);
-}
-
-template<class P_parameter>
-void Benchmark<P_parameter>::saveMatlabGraph(const char* filename) const
-{
-    BZPRECONDITION(state_ == done);
-
-    ofstream ofs(filename);
-     
-    assert(ofs.good());
-
-    ofs << "% This matlab file generated automatically by class Benchmark"
-        << endl << "% of the Blitz++ class library." << endl << endl;
-
-    ofs.setf(ios::scientific);
-
-    ofs << "parm = [ ";
-    int i;
-    for (i=0; i < numParameterSettings(); ++i)
-        ofs << setprecision(12) << double(getParameterSetting(i)) << " ";
-    ofs << "]; " << endl << endl;
-
-    ofs << "Mf = [ ";
-    for (i=0; i < numParameterSettings(); ++i)
-    {
-        for (int j=0; j < numImplementations_; ++j)
-        {
-            ofs << setprecision(12) << getMflops(j,i) << " ";
-        }
-        if (i != numParameterSettings()-1)
-            ofs << ";" << endl;
-    }
-    ofs << "] ;" << endl << endl;
-
-    ofs << "semilogx(parm,Mf), title('" << description() << "'), " << endl
-        << "    xlabel('" << parameterDescription() << "'), "
-        << "ylabel('Mflops')" << endl
-        << "legend(";
-    
-    for (int j=0; j < numImplementations_; ++j)
-    {
-        ofs << "'" << implementations_[j]->implementationName()
-            << "'";
-        if (j != numImplementations_ - 1)
-            ofs << ", ";
-    } 
-
-    ofs << ")" << endl;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_BENCH_CC
diff --git a/weave/blitz-20001213/blitz/bench.h b/weave/blitz-20001213/blitz/bench.h
deleted file mode 100644
index 67c78da..0000000
--- a/weave/blitz-20001213/blitz/bench.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/***************************************************************************
- * blitz/bench.h      Benchmark classes
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:30:34  tveldhui
- * Prior to rewrite of Bench class; in this version, Bench contains
- * each benchmark implementation.
- *
- */
-
-#ifndef BZ_BENCH_H
-#define BZ_BENCH_H
-
-#ifndef BZ_MATRIX_H
- #include <blitz/matrix.h>
-#endif
-
-#ifndef BZ_TIMER_H
- #include <blitz/timer.h>
-#endif
-
-#include <math.h>
-
-BZ_NAMESPACE(blitz)
-
-// Forward declaration
-template<class P_parameter = unsigned>
-class BenchmarkImplementation;
-
-
-// Declaration of class Benchmark<T>
-// The template parameter T is the parameter type which is varied in
-// the benchmark.  Typically T will be an unsigned, and will represent
-// the length of a vector, size of an array, etc.
-
-template<class P_parameter = unsigned>
-class Benchmark {
-
-public:
-    typedef P_parameter T_parameter;
-
-    Benchmark(unsigned numImplementations);
-
-    ~Benchmark();
-
-    void addImplementation(BenchmarkImplementation<T_parameter>* 
-        implementation);
-
-    void run(ostream& log = cout);
-
-    double getMflops(unsigned implementation, unsigned setting) const;
-
-    double getRate(unsigned implementation, unsigned setting) const;
-
-    void saveMatlabGraph(const char* filename) const;
-
-public:
-    // Virtual functions
-
-    virtual const char* description() const
-    { return ""; }
-
-    virtual const char* parameterDescription() const
-    { return "Vector length"; }
-
-    virtual unsigned numParameterSettings() const
-    { return 19; }
-
-    virtual T_parameter getParameterSetting(unsigned i) const
-    { return ::pow(10.0, (i+1)/4.0); }
-
-    virtual long getIterationSetting(unsigned i) const
-    { return 1000000L / getParameterSetting(i); }
-
-private:
-    Benchmark(const Benchmark<P_parameter>&) { }
-    void operator=(const Benchmark<P_parameter>&) { }
-
-    enum { uninitialized, initialized, running, done } state_;
-
-    unsigned numImplementations_;
-    unsigned numStoredImplementations_;
-
-    BenchmarkImplementation<T_parameter>** implementations_;
-
-    Matrix<double,RowMajor> rates_;       // Iterations per second array
-    Matrix<double,RowMajor> Mflops_;
-};
-
-template<class P_parameter>
-class BenchmarkImplementation {
-
-public:
-    typedef P_parameter T_parameter;
-
-    virtual void initialize(P_parameter parameter) { }
-
-    virtual void done() { }
-
-    virtual const char* implementationName() const
-    { return ""; }
-
-    virtual void run(long iterations) = 0;
-
-    virtual void runOverhead(long iterations) 
-    { 
-        for (long i=0; i < iterations; ++i)
-        {
-        }
-    };
-
-    virtual void tickle() { }
-
-    virtual long flopsPerIteration() const
-    { return 0; }
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/bench.cc>  
-
-#endif // BZ_BENCH_H
diff --git a/weave/blitz-20001213/blitz/benchext.cc b/weave/blitz-20001213/blitz/benchext.cc
deleted file mode 100644
index 3b840bb..0000000
--- a/weave/blitz-20001213/blitz/benchext.cc
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_BENCHEXT_CC
-#define BZ_BENCHEXT_CC
-
-#ifndef BZ_BENCHEXT_H
- #error <blitz/benchext.cc> must be included via <blitz/benchext.h>
-#endif
-
-#ifdef BZ_HAVE_STD
- #include <fstream>
-#else
- #include <fstream.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_parameter>
-BenchmarkExt<P_parameter>::BenchmarkExt(const char* name, 
-    int numImplementations)
-{
-    BZPRECONDITION(numImplementations > 0);
-
-    description_ = name;
-    numImplementations_ = numImplementations;
-
-    implementationDescriptions_.resize(numImplementations);
-    parameterDescription_ = "Vector length";
-    rateDescription_ = "Mflops/s";
-
-    // Set up default parameters and iterations
-    setNumParameters(19);
-
-    // NEEDS_WORK: once pow(X,Y) is supported, can just say
-    // parameters_ = pow(10.0, Range(1,20)/4.0);
-
-    for (int i=0; i < numParameters_; ++i)
-        parameters_[i] = (P_parameter)::pow(10.0, (i+1)/4.0);
-
-    iterations_ = 5.0e+5 / parameters_;
-    flopsPerIteration_ = parameters_;
-
-    // Set up initial state
-    state_ = initializing;
-    implementationNumber_ = 0;
-}
-
-template<class P_parameter>
-BenchmarkExt<P_parameter>::~BenchmarkExt()
-{
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::setNumParameters(int numParameters)
-{
-    BZPRECONDITION(state_ == initializing);
-
-    numParameters_ = numParameters;
-
-    parameters_.resize(numParameters_);
-    iterations_.resize(numParameters_);
-    flopsPerIteration_.resize(numParameters_);
-
-    // Set up timer and Mflops array
-    times_.resize(numImplementations_, numParameters_);
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::setParameterVector(Vector<P_parameter> parms)
-{
-    BZPRECONDITION(state_ == initializing);
-    BZPRECONDITION(parms.length() == parameters_.length());
-
-    // NEEDS_WORK: should use operator=(), once that problem
-    // gets sorted out.
-    // parameters_ = parms;
-    for (int i=0; i < parameters_.length(); ++i)
-        parameters_[i] = parms(i);
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::setParameterDescription(const char* string)
-{
-    parameterDescription_ = string;
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::setIterations(Vector<long> iters)
-{
-    BZPRECONDITION(state_ == initializing);
-
-    // NEEDS_WORK: should use operator=(), once that problem
-    // gets sorted out.
-    // iterations_ = iters;
-
-    for (int i=0; i < iterations_.length(); ++i)
-        iterations_[i] = iters(i);
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::setFlopsPerIteration(Vector<double> 
-    flopsPerIteration)
-{
-    BZPRECONDITION(flopsPerIteration_.length() == flopsPerIteration.length());
-
-    // NEEDS_WORK: should use operator=(), once that problem
-    // gets sorted out.
-    // flopsPerIteration_ = flopsPerIteration;
-
-    for (int i=0; i < flopsPerIteration_.length(); ++i)
-        flopsPerIteration_[i] = flopsPerIteration[i];
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::setRateDescription(const char* string)
-{
-    rateDescription_ = string;
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::beginBenchmarking()
-{
-    BZPRECONDITION(state_ == initializing);
-    state_ = benchmarking;
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::beginImplementation(const char* description)
-{
-    BZPRECONDITION(implementationNumber_ < numImplementations_);
-    BZPRECONDITION(state_ == benchmarking);
-
-    implementationDescriptions_[implementationNumber_] = description;
-
-    state_ = benchmarkingImplementation;
-    parameterNumber_ = 0;
-}
-
-template<class P_parameter>
-_bz_bool BenchmarkExt<P_parameter>::doneImplementationBenchmark() const
-{
-    BZPRECONDITION(state_ == benchmarkingImplementation);
-    return parameterNumber_ == numParameters_;
-}
-
-template<class P_parameter>
-P_parameter BenchmarkExt<P_parameter>::getParameter() const
-{
-    BZPRECONDITION(state_ == benchmarkingImplementation);
-    BZPRECONDITION(parameterNumber_ >= 0);
-    BZPRECONDITION(parameterNumber_ < numParameters_);
-
-    return parameters_[parameterNumber_];
-}
-
-template<class P_parameter>
-long BenchmarkExt<P_parameter>::getIterations() const
-{
-    BZPRECONDITION(state_ == benchmarkingImplementation);
-    BZPRECONDITION(parameterNumber_ >= 0);
-    BZPRECONDITION(parameterNumber_ < numParameters_);
-
-    return iterations_[parameterNumber_];
-}
-
-template<class P_parameter>
-inline void BenchmarkExt<P_parameter>::start()
-{
-    BZPRECONDITION(state_ == benchmarkingImplementation);
-    BZPRECONDITION(parameterNumber_ < numParameters_);
-    state_ = running;
-    timer_.start();
-}
-
-template<class P_parameter>
-inline void BenchmarkExt<P_parameter>::stop()
-{
-    timer_.stop();
-    BZPRECONDITION(state_ == running);
-    state_ = benchmarkingImplementation;
-    
-    times_(implementationNumber_, parameterNumber_) = timer_.elapsedSeconds();
-
-    ++parameterNumber_;
-}
-
-template<class P_parameter>
-inline void BenchmarkExt<P_parameter>::setTime(double seconds)
-{
-    BZPRECONDITION(state_ == running);
-    state_ = benchmarkingImplementation;
-    times_(implementationNumber_, parameterNumber_) = seconds;
-    ++parameterNumber_;
-}
-
-template<class P_parameter>
-inline void BenchmarkExt<P_parameter>::startOverhead()
-{
-    BZPRECONDITION(state_ == benchmarkingImplementation);
-    BZPRECONDITION(parameterNumber_ > 0);
-    BZPRECONDITION(parameterNumber_ <= numParameters_);
-    state_ = runningOverhead;
-    overheadTimer_.start();
-}
-
-template<class P_parameter>
-inline void BenchmarkExt<P_parameter>::stopOverhead()
-{
-    BZPRECONDITION(state_ == runningOverhead);
-    overheadTimer_.stop();
-    times_(implementationNumber_, parameterNumber_-1) -= 
-        overheadTimer_.elapsedSeconds();
-
-    state_ = benchmarkingImplementation;
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::endImplementation()
-{
-    BZPRECONDITION(state_ == benchmarkingImplementation);
-    BZPRECONDITION(parameterNumber_ == numParameters_);
-
-    ++implementationNumber_;
-
-    state_ = benchmarking;
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::endBenchmarking()
-{
-    BZPRECONDITION(state_ == benchmarking);
-    BZPRECONDITION(implementationNumber_ == numImplementations_);
-    
-    state_ = done;
-}
-
-template<class P_parameter>
-double BenchmarkExt<P_parameter>::getMflops(unsigned implementation,
-    unsigned parameterNum) const
-{
-    BZPRECONDITION(state_ == done);
-    BZPRECONDITION(implementation < numImplementations_);
-    BZPRECONDITION(parameterNum < numParameters_);
-    return iterations_(parameterNum) * flopsPerIteration_(parameterNum)
-        / times_(implementation, parameterNum) / 1.0e+6;
-}
-
-template<class P_parameter>
-void BenchmarkExt<P_parameter>::saveMatlabGraph(const char* filename) const
-{
-    BZPRECONDITION(state_ == done);
-
-    ofstream ofs(filename);
-     
-    assert(ofs.good());
-
-    ofs << "% This matlab file generated automatically by class Benchmark"
-        << endl << "% of the Blitz++ class library." << endl << endl;
-
-    ofs.setf(ios::scientific);
-
-    // This will be a lot simpler once Matlab-style output formatting
-    // of vectors & matrices is finished.
-
-    // ofs << "parm = " << parameters_ << ";" << endl << endl;
-
-    ofs << "parm = [ ";
-    int i;
-    for (i=0; i < numParameters_; ++i)
-        ofs << setprecision(12) << double(parameters_[i]) << " ";
-    ofs << "]; " << endl << endl;
-
-    ofs << "Mf = [ ";
-    for (i=0; i < numParameters_; ++i)
-    {
-        for (int j=0; j < numImplementations_; ++j)
-        {
-            ofs << setprecision(12) << getMflops(j,i) << " ";
-        }
-        if (i != numParameters_ - 1)
-            ofs << ";" << endl;
-    }
-    ofs << "] ;" << endl << endl;
-
-    ofs << "semilogx(parm,Mf), title('" << description_ << "'), " << endl
-        << "    xlabel('" << parameterDescription_ << "'), "
-        << "ylabel('" << rateDescription_ << "')" << endl
-        << "legend(";
-    
-    for (int j=0; j < numImplementations_; ++j)
-    {
-        ofs << "'" << implementationDescriptions_(j) << "'";
-        if (j != numImplementations_ - 1)
-            ofs << ", ";
-    } 
-
-    ofs << ")" << endl;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_BENCHEXT_CC
diff --git a/weave/blitz-20001213/blitz/benchext.h b/weave/blitz-20001213/blitz/benchext.h
deleted file mode 100644
index 71fd382..0000000
--- a/weave/blitz-20001213/blitz/benchext.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/***************************************************************************
- * blitz/benchext.h      BenchmarkExt classes (Benchmarks with external
- *                       control)
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_BENCHEXT_H
-#define BZ_BENCHEXT_H
-
-#ifndef BZ_MATRIX_H
- #include <blitz/matrix.h>
-#endif
-
-#ifndef BZ_TIMER_H
- #include <blitz/timer.h>
-#endif
-
-#include <math.h>
-
-// NEEDS_WORK: replace use of const char* with <string>, once standard
-// library is widely supported.
-
-BZ_NAMESPACE(blitz)
-
-// Declaration of class BenchmarkExt<T>
-// The template parameter T is the parameter type which is varied in
-// the benchmark.  Typically T will be an unsigned, and will represent
-// the length of a vector, size of an array, etc.
-
-template<class P_parameter = unsigned>
-class BenchmarkExt {
-
-public:
-    typedef P_parameter T_parameter;
-
-    BenchmarkExt(const char* description, int numImplementations);
-
-    ~BenchmarkExt();
-
-    void setNumParameters(int numParameters);
-    void setParameterVector(Vector<T_parameter> parms);
-    void setParameterDescription(const char* string);
-    void setIterations(Vector<long> iters);
-    void setFlopsPerIteration(Vector<double> flopsPerIteration);
-    void setRateDescription(const char* string);
-
-    void beginBenchmarking();
-
-    void beginImplementation(const char* description);
-
-    _bz_bool doneImplementationBenchmark() const;
-
-    T_parameter getParameter() const;
-    long        getIterations() const;
-
-    inline void start();
-    inline void stop();
-    void setTime(double s);
-
-    void startOverhead();
-    void stopOverhead();
-
-    void endImplementation();
-
-    void endBenchmarking();
- 
-    double getMflops(unsigned implementation, unsigned parameterNum) const;
-
-    void saveMatlabGraph(const char* filename) const;
-
-protected:
-    BenchmarkExt(const BenchmarkExt<P_parameter>&) { }
-    void operator=(const BenchmarkExt<P_parameter>&) { }
-
-    enum { initializing, benchmarking, benchmarkingImplementation, 
-       running, runningOverhead, done } state_;
-
-    unsigned numImplementations_;
-    unsigned implementationNumber_;
-
-    const char* description_;
-    Vector<const char*> implementationDescriptions_;
-
-    Matrix<double,RowMajor> times_;       // Elapsed time
-
-    Vector<T_parameter> parameters_;
-    Vector<long> iterations_;
-    Vector<double> flopsPerIteration_;
-
-    Timer timer_;
-    Timer overheadTimer_;
-
-    const char* parameterDescription_;
-    const char* rateDescription_;
-
-    int numParameters_;
-    int parameterNumber_;
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/benchext.cc>  
-
-#endif // BZ_BENCHEXT_H
diff --git a/weave/blitz-20001213/blitz/blitz.h b/weave/blitz-20001213/blitz/blitz.h
deleted file mode 100644
index 4cf829f..0000000
--- a/weave/blitz-20001213/blitz/blitz.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/***************************************************************************
- * blitz/blitz.h      Includes all the important header files
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org    
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.7  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.6  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.5  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.4  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1996/11/11 17:29:13  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1996/04/14  21:13:00  todd
- * Initial revision
- *
- */
-
-#ifndef BZ_BLITZ_H
-#define BZ_BLITZ_H
-
-/*
- * These symbols allow use of the IEEE and System V math libraries
- * (libm.a and libmsaa.a) on some platforms.
- */
-
-#ifdef BZ_ENABLE_XOPEN_SOURCE
- #ifndef _ALL_SOURCE
-  #define _ALL_SOURCE
- #endif
- #ifndef _XOPEN_SOURCE
-  #define _XOPEN_SOURCE
- #endif
- #ifndef _XOPEN_SOURCE_EXTENDED
-  #define _XOPEN_SOURCE_EXTENDED 1
- #endif
-#endif
-
-#include <blitz/compiler.h>          // Compiler-specific directives
-#include <blitz/tuning.h>            // Performance tuning
-#include <blitz/tau.h>               // Profiling
-
-#include <string>
-#include <stdio.h>                   // sprintf, etc.
-
-#ifdef BZ_HAVE_STD
-  #include <iostream>
-  #include <iomanip>
-#else
-  #include <iostream.h>
-  #include <iomanip.h>
-#endif
-
-#ifdef BZ_MATH_FN_IN_NAMESPACE_STD 
-  #include <cmath>
-#endif
-
-#include <math.h>
-
-#ifdef BZ_HAVE_COMPLEX
-  #include <complex>
-#endif
-
-#define BZ_THROW                     // Needed in <blitz/numinquire.h>
-
-BZ_NAMESPACE(blitz)
-
-#ifdef BZ_HAVE_STD
- BZ_USING_NAMESPACE(std)
-#endif
-
-#ifdef BZ_GENERATE_GLOBAL_INSTANCES
- #define _bz_global
- #define BZ_GLOBAL_INIT(X)   =X
-#else
- #define _bz_global extern
- #define BZ_GLOBAL_INIT(X) 
-#endif
-
-BZ_NAMESPACE_END
-
-#include <blitz/bzdebug.h>           // Debugging macros
-
-#endif // BZ_BLITZ_H
diff --git a/weave/blitz-20001213/blitz/bzdebug.h b/weave/blitz-20001213/blitz/bzdebug.h
deleted file mode 100644
index ba02b91..0000000
--- a/weave/blitz-20001213/blitz/bzdebug.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/***************************************************************************
- * blitz/bzdebug.h      Debugging macros
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.7  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.6  1998/02/26 18:09:36  tveldhui
- * Added testsuite support for precondition fail checking
- *
- * Revision 1.5  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.4  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1996/11/11 17:29:13  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1996/04/14  12:36:45  todd
- * Initial revision
- *
- *
- */
-
-#ifndef BZ_DEBUG_H
-#define BZ_DEBUG_H
-
-#include <stdlib.h>
-#include <assert.h>
-
-#ifdef BZ_RTTI
- #include <typeinfo>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * These globals are used by the Blitz++ testsuite.  The _bz_global 
- * modifier ensures that they will reside in libblitz.a, but appear
- * "extern" elsewhere.
- */
-
-_bz_global _bz_bool assertFailMode     BZ_GLOBAL_INIT(_bz_false);
-_bz_global int      assertFailCount    BZ_GLOBAL_INIT(0);
-_bz_global int      assertSuccessCount BZ_GLOBAL_INIT(0);
-
-
-#ifdef BZ_TESTSUITE
-  /*
-   * In testsuite mode, these routines allow a test suite to check
-   * that precondition checking is being done properly.  A typical
-   * use looks like this:
-   *
-   * beginCheckAssert();
-   *   // Some operation which should cause an assert to fail
-   * endCheckAssert();
-   *
-   * The routine beginCheckAssert() sets a flag which results in
-   * failed asserts being silently tallied.  If no asserts have
-   * failed by the time endCheckAssert() is invoked, the program
-   * halts and issues an error code.
-   *
-   * In normal operation (i.e. when beginCheckAssert() has not
-   * been called), failed preconditions will cause the program
-   * to halt and issue an error code.   -- TV 980226
-   */
-
-  inline void checkAssert(_bz_bool condition, const char* where=0, 
-    int line=0)
-  {
-    if (assertFailMode == _bz_true)
-    {
-      if (condition == _bz_true)
-        ++assertSuccessCount;
-      else
-        ++assertFailCount;
-    }
-    else {
-      if (!condition)
-      {
-        cerr << "Unexpected assert failure!" << endl;
-        if (where)
-            cerr << where << ":" << line << endl;
-        cerr.flush();
-        assert(0);
-      }
-    }
-  }
-
-  inline void beginCheckAssert()
-  {
-    assertFailMode = _bz_true;
-    assertSuccessCount = 0;
-    assertFailCount = 0;
-  }
-
-  inline void endCheckAssert()
-  {
-    assert(assertFailMode == _bz_true);
-    assertFailMode = _bz_false;
-    if (assertFailCount == 0)
-    {
-      cerr << "Assert check failed!" << endl;
-      assert(0);
-    }
-  }
-
-    #define BZASSERT(X)        checkAssert(X, __FILE__, __LINE__)
-    #define BZPRECONDITION(X)  checkAssert(X, __FILE__, __LINE__)
-    #define BZPOSTCONDITION(X) checkAssert(X, __FILE__, __LINE__)
-    #define BZSTATECHECK(X,Y)  checkAssert(X == Y, __FILE__, __LINE__)
-    #define BZPRECHECK(X,Y)                                    \
-        {                                                      \
-            if ((assertFailMode == _bz_false) && (!(X)))       \
-                cerr << Y << endl;                             \
-            checkAssert(X, __FILE__, __LINE__);                \
-        }
-
-    #define BZ_DEBUG_MESSAGE(X) \
-        { if (assertFailMode == _bz_false) { cout << __FILE__ << ":" << __LINE__ << " " << X << endl; } }
-
-    #define BZ_PRE_FAIL        checkAssert(0)
-#else 
-#ifdef BZ_DEBUG
-    #define BZASSERT(X)        assert(X)
-    #define BZPRECONDITION(X)  assert(X)
-    #define BZPOSTCONDITION(X) assert(X)
-    #define BZSTATECHECK(X,Y)  assert(X == Y)
-    #define BZPRECHECK(X,Y)        \
-        { if (!(X))                                                           \
-          { cerr << "[Blitz++] Precondition failure: Module " << __FILE__   \
-               << " line " << __LINE__ << endl                              \
-               << Y << endl;                                                \
-            cerr.flush();                                                   \
-            assert(0);                                                      \
-          }                                                                 \
-        }
-
-    #define BZ_PRE_FAIL      assert(0)
-
-    #define BZ_DEBUG_MESSAGE(X) \
-        { cout << __FILE__ << ":" << __LINE__ << " " << X << endl; }
-
-    void _bz_debug_marker();
-    #define BZ_ASM_DEBUG_MARKER   _bz_debug_marker();
-#else   // !BZ_DEBUG
-    #define BZASSERT(X)
-    #define BZPRECONDITION(X)
-    #define BZPOSTCONDITION(X)
-    #define BZSTATECHECK(X,Y)
-    #define BZPRECHECK(X,Y)
-    #define BZ_PRE_FAIL
-    #define BZ_DEBUG_MESSAGE(X)
-#endif  // !BZ_DEBUG
-#endif  // !BZ_TESTSUITE
-
-// This routine doesn't exist anywhere; it's used to mark a
-// position of interest in assembler (.s) files
-void _bz_debug_marker();
-
-#define BZ_NOT_IMPLEMENTED()   { cerr << "[Blitz++] Not implemented: module " \
-    << __FILE__ << " line " << __LINE__ << endl;                \
-    exit(1); }
-
-#ifdef BZ_RTTI
-#define BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(X)  typeid(X).name()
-#else
-
-template<class T>
-class _bz_stringLiteralForNumericType {
-public:
-    static const char* string()
-    { return "unknown"; }
-};
-
-#define BZ_DECL_SLFNT(X,Y) \
- template<>                 \
- class _bz_stringLiteralForNumericType< X > {  \
- public:                                       \
-     static const char* string()               \
-     { return Y; }                             \
- }
-
-#ifdef BZ_BOOL
-BZ_DECL_SLFNT(bool, "bool");
-#endif
-
-BZ_DECL_SLFNT(char, "char");
-BZ_DECL_SLFNT(unsigned char, "unsigned char");
-BZ_DECL_SLFNT(short int, "short int");
-BZ_DECL_SLFNT(short unsigned int, "short unsigned int");
-BZ_DECL_SLFNT(int, "int");
-BZ_DECL_SLFNT(unsigned int, "unsigned int");
-BZ_DECL_SLFNT(long, "long");
-BZ_DECL_SLFNT(unsigned long, "unsigned long");
-BZ_DECL_SLFNT(float, "float");
-BZ_DECL_SLFNT(double, "double");
-BZ_DECL_SLFNT(long double, "long double");
-
-#ifdef BZ_HAVE_COMPLEX
-BZ_DECL_SLFNT(complex<float>, "complex<float>");
-BZ_DECL_SLFNT(complex<double>, "complex<double>");
-BZ_DECL_SLFNT(complex<long double>, "complex<long double>");
-#endif
-
-#define BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(X) \
-    _bz_stringLiteralForNumericType<X>::string()
-
-#endif // !BZ_RTTI
-
-BZ_NAMESPACE_END
-
-#endif // BZ_DEBUG_H
diff --git a/weave/blitz-20001213/blitz/compiler.h b/weave/blitz-20001213/blitz/compiler.h
deleted file mode 100644
index 783a7eb..0000000
--- a/weave/blitz-20001213/blitz/compiler.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/***************************************************************************
- * blitz/compiler.h      Compiler specific directives and kludges
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.7  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.6  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.5  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.4  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1996/11/11 17:29:13  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-
-#ifndef BZ_COMPILER_H
-#define BZ_COMPILER_H
-
-// The file <blitz/config.h> is generated automatically by the
-// script 'bzconfig', located in the 'compiler' directory.
-
-#include <blitz/config.h>
-
-/*
- * Define some kludges.
- */
-
-#ifndef BZ_TEMPLATES
-    #error  In <blitz/config.h>: A working template implementation is required by Blitz++ (you may need to rerun the compiler/bzconfig script)
-#endif
-
-#ifndef BZ_MEMBER_TEMPLATES
-  #error  In <blitz/config.h>: Your compiler does not support member templates.  (you may need to rerun the compiler/bzconfig script)
-#endif
-
-#ifndef BZ_FULL_SPECIALIZATION_SYNTAX
-  #error In <blitz/config.h>: Your compiler does not support template<> full specialization syntax.  You may need to rerun the compiler/bzconfig script.
-#endif
-
-#ifndef BZ_PARTIAL_ORDERING
-  #error In <blitz/config.h>: Your compiler does not support partial ordering (you may need to rerun the compiler/bzconfig script)
-#endif
-
-#ifndef BZ_PARTIAL_SPECIALIZATION
-  #error In <blitz/config.h>: Your compiler does not support partial specialization (you may need to rerun the compiler/bzconfig script)
-#endif
-
-#ifdef BZ_NAMESPACES
-    #define BZ_NAMESPACE(X)        namespace X {
-    #define BZ_NAMESPACE_END       }
-    #define BZ_USING_NAMESPACE(X)  using namespace X;
-#else
-    #define BZ_NAMESPACE(X)
-    #define BZ_NAMESPACE_END
-    #define BZ_USING_NAMESPACE(X)
-#endif
-
-#ifdef BZ_TEMPLATE_QUALIFIED_RETURN_TYPE
-  #define BZ_USE_NUMTRAIT
-#endif
-
-#ifdef BZ_DEFAULT_TEMPLATE_PARAMETERS
-    #define BZ_TEMPLATE_DEFAULT(X)   = X
-#else
-    #define BZ_TEMPLATE_DEFAULT
-#endif
-
-#ifdef BZ_EXPLICIT
-    #define _bz_explicit     explicit
-#else
-    #define _bz_explicit   
-#endif
-
-#ifdef BZ_TYPENAME
-    #define _bz_typename     typename
-#else
-    #define _bz_typename
-#endif
-
-#ifdef BZ_MUTABLE
-    #define _bz_mutable      mutable
-#else
-    #define _bz_mutable
-#endif
-
-#ifdef BZ_DISABLE_RESTRICT
- #undef BZ_NCEG_RESTRICT
-#endif
-
-#ifdef BZ_NCEG_RESTRICT
-    #define _bz_restrict     restrict
-#elif defined(BZ_NCEG_RESTRICT_EGCS)
-    #define _bz_restrict     __restrict__
-#else
-    #define _bz_restrict
-#endif
-
-#ifdef BZ_BOOL
-    #define _bz_bool         bool
-    #define _bz_true         true
-    #define _bz_false        false
-#else
-    #define _bz_bool         int
-    #define _bz_true         1
-    #define _bz_false        0
-#endif
-
-#ifdef BZ_ENUM_COMPUTATIONS_WITH_CAST
-    #define BZ_ENUM_CAST(X)   (int)X
-#elif defined(BZ_ENUM_COMPUTATIONS)
-    #define BZ_ENUM_CAST(X)   X
-#else
-    #error In <blitz/config.h>: Your compiler does not support enum computations.  You may have to rerun compiler/bzconfig.
-#endif
-
-#if defined(BZ_MATH_FN_IN_NAMESPACE_STD)
-  #define BZ_MATHFN_SCOPE(x) std::x
-#elif defined(BZ_NAMESPACES)
-  #define BZ_MATHFN_SCOPE(x) ::x
-#else
-  #define BZ_MATHFN_SCOPE(x) x
-#endif
-
-#if defined(BZ_COMPLEX_MATH_IN_NAMESPACE_STD)
-  #define BZ_CMATHFN_SCOPE(x) std::x
-#elif defined(BZ_NAMESPACES)
-  #define BZ_CMATHFN_SCOPE(x) ::x
-#else
-  #define BZ_CMATHFN_SCOPE(x) x
-#endif
-
-#if defined(BZ_NAMESPACES)
-  #define BZ_IEEEMATHFN_SCOPE(x) ::x
-#else
-  #define BZ_IEEEMATHFN_SCOPE(x) x
-#endif
-
-#if defined(BZ_NAMESPACES)
-  #define BZ_BLITZ_SCOPE(x) blitz::x
-#else
-  #define BZ_BLITZ_SCOPE(x) ::x
-#endif
-
-#if defined(BZ_NAMESPACES)
-  #define BZ_STD_SCOPE(x) std::x
-#else
-  #define BZ_STD_SCOPE(x) ::x
-#endif
-
-#endif // BZ_COMPILER_H
-
diff --git a/weave/blitz-20001213/blitz/config.h b/weave/blitz-20001213/blitz/config.h
deleted file mode 100644
index b8b1f0c..0000000
--- a/weave/blitz-20001213/blitz/config.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/******************************************************************************
- * config.h           Compiler language support flags
- *
- * This file was generated automatically by the script bzconfig.
- * You should rerun bzconfig each time you switch compilers, install new
- * standard libraries, or change compiler versions.
- *
- */
-
- 
-#ifndef BZ_CONFIG_H
-#define BZ_CONFIG_H
- 
-#define BZ_COMPILER_NAME   "g++"
-#define BZ_COMPILER_OPTIONS "-ftemplate-depth-30"
-#define BZ_OS_NAME         "Linux 2.2.14-5.0"
-#define BZ_BZCONFIG_DATE   "Tue Apr 10 21:43:49 EDT 2001"
-#define BZ_PLATFORM        "i686-pc-linux-gnu"
- 
-#define BZ_NAMESPACES
-#define BZ_EXCEPTIONS
-#define BZ_RTTI
-#define BZ_MEMBER_CONSTANTS
-#undef  BZ_OLD_FOR_SCOPING
-#define BZ_EXPLICIT
-#define BZ_MUTABLE
-#define BZ_TYPENAME
-#undef  BZ_NCEG_RESTRICT
-#define BZ_NCEG_RESTRICT_EGCS
-#define BZ_BOOL
-#define BZ_CONST_CAST
-#define BZ_STATIC_CAST
-#define BZ_REINTERPRET_CAST
-#define BZ_DYNAMIC_CAST
-#define BZ_TEMPLATES
-#define BZ_PARTIAL_SPECIALIZATION
-#define BZ_PARTIAL_ORDERING
-#define BZ_DEFAULT_TEMPLATE_PARAMETERS
-#define BZ_MEMBER_TEMPLATES
-#define BZ_MEMBER_TEMPLATES_OUTSIDE_CLASS
-#define BZ_FULL_SPECIALIZATION_SYNTAX
-#define BZ_FUNCTION_NONTYPE_PARAMETERS
-#define BZ_TEMPLATE_QUALIFIED_BASE_CLASS
-#define BZ_TEMPLATE_QUALIFIED_RETURN_TYPE
-#define BZ_EXPLICIT_TEMPLATE_FUNCTION_QUALIFICATION
-#define BZ_TEMPLATES_AS_TEMPLATE_ARGUMENTS
-#define BZ_TEMPLATE_KEYWORD_QUALIFIER
-#define BZ_TEMPLATE_SCOPED_ARGUMENT_MATCHING
-#define BZ_TYPE_PROMOTION
-#define BZ_USE_NUMTRAIT
-#define BZ_ENUM_COMPUTATIONS
-#define BZ_ENUM_COMPUTATIONS_WITH_CAST
-#define BZ_HAVE_COMPLEX
-#undef  BZ_HAVE_NUMERIC_LIMITS
-#define BZ_HAVE_CLIMITS
-#define BZ_HAVE_VALARRAY
-#undef  BZ_HAVE_COMPLEX_MATH
-#define BZ_HAVE_IEEE_MATH
-#undef  BZ_HAVE_SYSTEM_V_MATH
-#define BZ_MATH_FN_IN_NAMESPACE_STD
-#define BZ_COMPLEX_MATH_IN_NAMESPACE_STD
-#define BZ_HAVE_STD
-#define BZ_HAVE_STL
-#define BZ_HAVE_RUSAGE
- 
-#endif // BZ_CONFIG_H
diff --git a/weave/blitz-20001213/blitz/etbase.h b/weave/blitz-20001213/blitz/etbase.h
deleted file mode 100644
index f8cf9d0..0000000
--- a/weave/blitz-20001213/blitz/etbase.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef BZ_ETBASE_H
-#define BZ_ETBASE_H
-
-BZ_NAMESPACE(blitz)
-
-template<class T>
-class ETBase { 
-public:
-    ETBase() 
-    { }
-
-    ETBase(const ETBase<T>&)
-    { }
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ETBASE_H
-
diff --git a/weave/blitz-20001213/blitz/extremum.h b/weave/blitz-20001213/blitz/extremum.h
deleted file mode 100644
index 0a42018..0000000
--- a/weave/blitz-20001213/blitz/extremum.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/***************************************************************************
- * blitz/extremum.h      Declaration of the Extremum<T_numtype, T_index> class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_EXTREMUM_H
-#define BZ_EXTREMUM_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// The Extremum class is used for returning extreme values and their
-// locations in a numeric container.  It's a simple 2-tuple, with the
-// first element being the extreme value, and the send its location.
-// An object of type Extremum can be automatically converted to
-// the numeric type via operator T_numtype().
-template<class P_numtype, class P_index>
-class Extremum {
-public:
-    typedef P_numtype T_numtype;
-    typedef P_index   T_index;
-
-    Extremum(T_numtype value, T_index index)
-        : value_(value), index_(index)
-    { }
-
-    T_numtype value() const
-    { return value_; }
-
-    T_index index() const
-    { return index_; }
-
-    void setValue(T_numtype value)
-    { value_ = value; }
-
-    void setIndex(T_index index)
-    { index_ = index; }
-
-    operator T_numtype() const
-    { return value_; }
-
-protected:
-    T_numtype value_;
-    T_index index_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_EXTREMUM_H
-
diff --git a/weave/blitz-20001213/blitz/indexexpr.h b/weave/blitz-20001213/blitz/indexexpr.h
deleted file mode 100644
index 55ed742..0000000
--- a/weave/blitz-20001213/blitz/indexexpr.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/***************************************************************************
- * blitz/indexexpr.h     Declaration of the IndexPlaceholder<N> class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    p://seurat.uhttwaterloo.ca/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_INDEXEXPR_H
-#define BZ_INDEXEXPR_H
-
-#ifndef BZ_TINYVEC_H
- #include <blitz/tinyvec.h>
-#endif
-
-#ifndef BZ_PRETTYPRINT_H
- #include <blitz/prettyprint.h>
-#endif
-
-#ifndef BZ_ETBASE_H
- #include <blitz/etbase.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<int N>
-class IndexPlaceholder 
-#ifdef BZ_NEW_EXPRESSION_TEMPLATES
-  : public ETBase<IndexPlaceholder<N> > 
-#endif
-{
-public:
-    IndexPlaceholder()
-    { }
-
-    IndexPlaceholder(const IndexPlaceholder<N>&)
-    { }
-
-    ~IndexPlaceholder()
-    { }
-
-    void operator=(const IndexPlaceholder<N>&)
-    { }
-
-    typedef int T_numtype;
-    typedef int T_ctorArg1;     // Dummy; not used
-    typedef int T_ctorArg2;     // Ditto
-
-    enum { numArrayOperands = 0, numIndexPlaceholders = 1,
-        rank = N+1 };
-
-    // If you have a precondition failure on this routine, it means
-    // you are trying to use stack iteration mode on an expression
-    // which contains an index placeholder.  You must use index 
-    // iteration mode instead.
-    int operator*()
-    { 
-        BZPRECONDITION(0); 
-        return 0;
-    }
-
-#ifdef BZ_ARRAY_EXPR_PASS_INDEX_BY_VALUE
-    template<int N_rank>
-    T_numtype operator()(TinyVector<int, N_rank> i)
-    { return i[N]; }
-#else
-    template<int N_rank>
-    T_numtype operator()(const TinyVector<int, N_rank>& i)
-    { return i[N]; }
-#endif
-
-    int ascending(int) const
-    { return INT_MIN; }
-
-    int ordering(int) const
-    { return INT_MIN; }
-
-    int lbound(int) const
-    { return INT_MIN; }   // tiny(int());
-
-    int ubound(int) const
-    { return INT_MAX; }  // huge(int()); 
-
-    // See operator*() note
-    void push(int)
-    { 
-        BZPRECONDITION(0); 
-    }
-
-    // See operator*() note
-    void pop(int)
-    { 
-        BZPRECONDITION(0); 
-    }
-
-    // See operator*() note
-    void advance()
-    { 
-        BZPRECONDITION(0); 
-    }
-
-    // See operator*() note
-    void advance(int)
-    { 
-        BZPRECONDITION(0); 
-    }
-
-    // See operator*() note
-    void loadStride(int)
-    { 
-        BZPRECONDITION(0); 
-    }
-
-    _bz_bool isUnitStride(int rank) const
-    { 
-        BZPRECONDITION(0);
-        return false;
-    }
-
-    void advanceUnitStride()
-    { 
-        BZPRECONDITION(0);
-    }
-
-    _bz_bool canCollapse(int,int) const
-    {   
-        BZPRECONDITION(0); 
-        return _bz_false; 
-    }
-
-    T_numtype operator[](int)
-    {
-        BZPRECONDITION(0);
-        return T_numtype();
-    }
-
-    T_numtype fastRead(int)
-    {
-        BZPRECONDITION(0);
-        return T_numtype();
-    }
-
-    int suggestStride(int) const
-    {
-        BZPRECONDITION(0);
-        return 0;
-    }
-
-    _bz_bool isStride(int,int) const
-    {
-        BZPRECONDITION(0);
-        return _bz_true;
-    }
-
-    void prettyPrint(string& str, prettyPrintFormat& format) const
-    {
-        // NEEDS_WORK-- do real formatting for reductions
-        str += "index-expr[NEEDS_WORK]";
-    }
-
-    template<class T_shape>
-    _bz_bool shapeCheck(const T_shape& shape) const
-    {
-        return _bz_true;
-    }
-};
-
-typedef IndexPlaceholder<0> firstIndex;
-typedef IndexPlaceholder<1> secondIndex;
-typedef IndexPlaceholder<2> thirdIndex;
-typedef IndexPlaceholder<3> fourthIndex;
-typedef IndexPlaceholder<4> fifthIndex;
-typedef IndexPlaceholder<5> sixthIndex;
-typedef IndexPlaceholder<6> seventhIndex;
-typedef IndexPlaceholder<7> eighthIndex;
-typedef IndexPlaceholder<8> ninthIndex;
-typedef IndexPlaceholder<9> tenthIndex;
-typedef IndexPlaceholder<10> eleventhIndex;
-
-#ifndef BZ_NO_TENSOR_INDEX_OBJECTS
-
-BZ_NAMESPACE(tensor)
-    _bz_global blitz::IndexPlaceholder<0> i;
-    _bz_global blitz::IndexPlaceholder<1> j;
-    _bz_global blitz::IndexPlaceholder<2> k;
-    _bz_global blitz::IndexPlaceholder<3> l;
-    _bz_global blitz::IndexPlaceholder<4> m;
-    _bz_global blitz::IndexPlaceholder<5> n;
-    _bz_global blitz::IndexPlaceholder<6> o;
-    _bz_global blitz::IndexPlaceholder<7> p;
-    _bz_global blitz::IndexPlaceholder<8> q;
-    _bz_global blitz::IndexPlaceholder<9> r;
-    _bz_global blitz::IndexPlaceholder<10> s;
-    _bz_global blitz::IndexPlaceholder<11> t;
-BZ_NAMESPACE_END // tensor
-
-#endif
-
-BZ_NAMESPACE_END
-
-#endif // BZ_INDEXEXPR_H
-
diff --git a/weave/blitz-20001213/blitz/limits-hack.h b/weave/blitz-20001213/blitz/limits-hack.h
deleted file mode 100644
index 70108cc..0000000
--- a/weave/blitz-20001213/blitz/limits-hack.h
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- * Severely hacked-up version of SGI/libstdc++ limits, for use with Blitz.
- */
-
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.  Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose.  It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is not portable code.  Parts of numeric_limits<> are
- * inherently machine-dependent, and this file is written for the MIPS
- * architecture and the SGI MIPSpro C++ compiler.  Parts of it (in
- * particular, some of the characteristics of floating-point types)
- * are almost certainly incorrect for any other platform.
- */
-
-#include <blitz/wrap-climits.h> 
-#include <float.h>
-
-BZ_NAMESPACE(std)
-
-enum float_round_style {
-  round_indeterminate       = -1,
-  round_toward_zero         =  0,
-  round_to_nearest          =  1,
-  round_toward_infinity     =  2,
-  round_toward_neg_infinity =  3
-};
-
-enum float_denorm_style {
-  denorm_indeterminate = -1,
-  denorm_absent        =  0,
-  denorm_present       =  1
-};
-
-// Base class for all specializations of numeric_limits.
-
-template <class __number>
-class _Numeric_limits_base {
-public:
-  static const bool is_specialized = false;
-
-  static __number min()  { return __number(); }
-  static __number max()  { return __number(); }
-
-  static const int digits   = 0;
-  static const int digits10 = 0;
-
-  static const bool is_signed  = false;
-  static const bool is_integer = false;
-  static const bool is_exact   = false;
-
-  static const int radix = 0;
-
-  static __number epsilon()      { return __number(); }
-  static __number round_error()  { return __number(); }
-
-  static const int min_exponent   = 0;
-  static const int min_exponent10 = 0;
-  static const int max_exponent   = 0;
-  static const int max_exponent10 = 0;
-
-  static const bool has_infinity      = false;
-  static const bool has_quiet_NaN     = false;
-  static const bool has_signaling_NaN = false;
-  static const float_denorm_style has_denorm = denorm_absent;
-  static const bool has_denorm_loss   = false;
-
-  static __number infinity()       { return __number(); }
-  static __number quiet_NaN()      { return __number(); }
-  static __number signaling_NaN()  { return __number(); }
-  static __number denorm_min()     { return __number(); }
-
-  static const bool is_iec559  = false;
-  static const bool is_bounded = false;
-  static const bool is_modulo  = false;
-
-  static const bool traps           = false;
-  static const bool tinyness_before = false;
-  static const float_round_style round_style = round_toward_zero;
-};
-
-#define __declare_numeric_base_member(__type, __mem) \
-template <class __number> \
-  const __type _Numeric_limits_base<__number>:: __mem
-
-__declare_numeric_base_member(bool, is_specialized);
-__declare_numeric_base_member(int, digits);
-__declare_numeric_base_member(int, digits10);
-__declare_numeric_base_member(bool, is_signed);
-__declare_numeric_base_member(bool, is_integer);
-__declare_numeric_base_member(bool, is_exact);
-__declare_numeric_base_member(int, radix);
-__declare_numeric_base_member(int, min_exponent);
-__declare_numeric_base_member(int, max_exponent);
-__declare_numeric_base_member(int, min_exponent10);
-__declare_numeric_base_member(int, max_exponent10);
-__declare_numeric_base_member(bool, has_infinity);
-__declare_numeric_base_member(bool, has_quiet_NaN);
-__declare_numeric_base_member(bool, has_signaling_NaN);
-__declare_numeric_base_member(float_denorm_style, has_denorm);
-__declare_numeric_base_member(bool, has_denorm_loss);
-__declare_numeric_base_member(bool, is_iec559);
-__declare_numeric_base_member(bool, is_bounded);
-__declare_numeric_base_member(bool, is_modulo);
-__declare_numeric_base_member(bool, traps);
-__declare_numeric_base_member(bool, tinyness_before);
-__declare_numeric_base_member(float_round_style, round_style);
-
-#undef __declare_numeric_base_member
-
-// Base class for integers.
-
-template <class _Int,
-          _Int __imin,
-          _Int __imax,
-          int __idigits = -1>
-class _Integer_limits : public _Numeric_limits_base<_Int> 
-{
-public:
-  static const bool is_specialized = true;
-
-  static _Int min()  { return __imin; }
-  static _Int max()  { return __imax; }
-
-  static const int digits = 
-    (__idigits < 0) ? sizeof(_Int) * CHAR_BIT - (__imin == 0 ? 0 : 1) 
-                    : __idigits;
-  static const int digits10 = (digits * 301) / 1000; 
-                                // log 2 = 0.301029995664...
-
-  static const bool is_signed = __imin != 0;
-  static const bool is_integer = true;
-  static const bool is_exact = true;
-  static const int radix = 2;
-
-
-  static const bool is_bounded = true;
-  static const bool is_modulo = true;
-};
-
-#define __declare_integer_limits_member(__type, __mem) \
-template <class _Int, _Int __imin, _Int __imax, int __idigits> \
-  const __type _Integer_limits<_Int, __imin, __imax, __idigits>:: __mem
-
-__declare_integer_limits_member(bool, is_specialized);
-__declare_integer_limits_member(int, digits);
-__declare_integer_limits_member(int, digits10);
-__declare_integer_limits_member(bool, is_signed);
-__declare_integer_limits_member(bool, is_integer);
-__declare_integer_limits_member(bool, is_exact);
-__declare_integer_limits_member(int, radix);
-__declare_integer_limits_member(bool, is_bounded);
-__declare_integer_limits_member(bool, is_modulo);
-
-#undef __declare_integer_limits_member
-
-// Base class for floating-point numbers.
-template <class __number,
-         int __Digits, int __Digits10,
-         int __MinExp, int __MaxExp,
-         int __MinExp10, int __MaxExp10,
-         unsigned int __InfinityWord,
-         unsigned int __QNaNWord, unsigned int __SNaNWord,
-         bool __IsIEC559,
-         float_round_style __RoundStyle>
-class _Floating_limits : public _Numeric_limits_base<__number>
-{
-public:
-  static const bool is_specialized = true;
-
-  static const int digits   = __Digits;
-  static const int digits10 = __Digits10;
-
-  static const bool is_signed = true;
-
-  static const int radix = 2;
-
-  static const int min_exponent   = __MinExp;
-  static const int max_exponent   = __MaxExp;
-  static const int min_exponent10 = __MinExp10;
-  static const int max_exponent10 = __MaxExp10;
-
-  static const bool has_infinity      = true;
-  static const bool has_quiet_NaN     = true;
-  static const bool has_signaling_NaN = true;
-  static const float_denorm_style has_denorm = denorm_indeterminate;
-  static const bool has_denorm_loss   = false;
-
-  static __number infinity()  {
-    static unsigned int _S_inf[sizeof(__number) / sizeof(int)] = 
-      { __InfinityWord };
-    return *reinterpret_cast<__number*>(&_S_inf);
-  }
-  static __number quiet_NaN()  {
-    static unsigned int _S_nan[sizeof(__number) / sizeof(int)] = 
-      { __QNaNWord };
-    return *reinterpret_cast<__number*>(&_S_nan);
-  }
-  static __number signaling_NaN()  {
-    static unsigned int _S_nan[sizeof(__number) / sizeof(int)] = 
-      { __SNaNWord };
-    return *reinterpret_cast<__number*>(&_S_nan);
-  }
-
-  static const bool is_iec559       = __IsIEC559;
-  static const bool is_bounded      = true;
-  static const bool traps           = true;
-  static const bool tinyness_before = false;
-
-  static const float_round_style round_style = __RoundStyle;
-};
-
-#define __declare_float_limits_member(__type, __mem) \
-template <class __Num, int __Dig, int __Dig10, \
-          int __MnX, int __MxX, int __MnX10, int __MxX10, \
-          unsigned int __Inf, unsigned int __QNaN, unsigned int __SNaN, \
-          bool __IsIEEE, float_round_style __Sty> \
-const __type _Floating_limits<__Num, __Dig, __Dig10, \
-                              __MnX, __MxX, __MnX10, __MxX10, \
-                              __Inf, __QNaN, __SNaN,__IsIEEE, __Sty>:: __mem
-
-__declare_float_limits_member(bool, is_specialized);  
-__declare_float_limits_member(int, digits);  
-__declare_float_limits_member(int, digits10);  
-__declare_float_limits_member(bool, is_signed);  
-__declare_float_limits_member(int, radix);  
-__declare_float_limits_member(int, min_exponent);  
-__declare_float_limits_member(int, max_exponent);  
-__declare_float_limits_member(int, min_exponent10);  
-__declare_float_limits_member(int, max_exponent10);  
-__declare_float_limits_member(bool, has_infinity);
-__declare_float_limits_member(bool, has_quiet_NaN);
-__declare_float_limits_member(bool, has_signaling_NaN);
-__declare_float_limits_member(float_denorm_style, has_denorm);
-__declare_float_limits_member(bool, has_denorm_loss);
-__declare_float_limits_member(bool, is_iec559);
-__declare_float_limits_member(bool, is_bounded);
-__declare_float_limits_member(bool, traps);
-__declare_float_limits_member(bool, tinyness_before);
-__declare_float_limits_member(float_round_style, round_style);
-
-#undef __declare_float_limits_member
-
-// Class numeric_limits
-
-// The unspecialized class.
-
-template<class T> 
-class numeric_limits : public _Numeric_limits_base<T> {};
-
-// Specializations for all built-in integral types.
-
-#ifndef __STL_NO_BOOL
-
-template<>
-class numeric_limits<bool>
-  : public _Integer_limits<bool, false, true, 0>
-{};
-
-#endif /* __STL_NO_BOOL */
-
-template<>
-class numeric_limits<char>
-  : public _Integer_limits<char, CHAR_MIN, CHAR_MAX>
-{};
-
-template<>
-class numeric_limits<signed char>
-  : public _Integer_limits<signed char, SCHAR_MIN, SCHAR_MAX>
-{};
-
-template<>
-class numeric_limits<unsigned char>
-  : public _Integer_limits<unsigned char, 0, UCHAR_MAX>
-{};
-
-#ifdef __STL_HAS_WCHAR_T
-
-template<>
-class numeric_limits<wchar_t>
-  : public _Integer_limits<wchar_t, INT_MIN, INT_MAX>
-{};
-
-#endif
-
-template<>
-class numeric_limits<short>
-  : public _Integer_limits<short, SHRT_MIN, SHRT_MAX>
-{};
-
-template<>
-class numeric_limits<unsigned short>
-  : public _Integer_limits<unsigned short, 0, USHRT_MAX>
-{};
-
-template<>
-class numeric_limits<int>
-  : public _Integer_limits<int, INT_MIN, INT_MAX>
-{};
-
-template<>
-class numeric_limits<unsigned int>
-  : public _Integer_limits<unsigned int, 0, UINT_MAX>
-{};
-
-template<>
-class numeric_limits<long>
-  : public _Integer_limits<long, LONG_MIN, LONG_MAX>
-{};
-
-template<>
-class numeric_limits<unsigned long>
-  : public _Integer_limits<unsigned long, 0, ULONG_MAX>
-{};
-
-#ifdef __STL_LONG_LONG
-#ifdef LONG_LONG_MIN
-
-// CYGNUS LOCAL 9/4/1998
-// fixed LONGLONG to be LONG_LONG
-template<>
-class numeric_limits<long long>
-  : public _Integer_limits<long long, LONG_LONG_MIN, LONG_LONG_MAX>
-{};
-
-// CYGNUS LOCAL 9/4/1998
-// fixed LONGLONG to be LONG_LONG
-template<>
-class numeric_limits<unsigned long long>
-  : public _Integer_limits<unsigned long long, 0, ULONG_LONG_MAX>
-{};
-
-#endif
-#endif /* __STL_LONG_LONG */
-
-// Specializations for all built-in floating-point type.
-
-template<> class numeric_limits<float>
-  : public _Floating_limits<float, 
-                            FLT_MANT_DIG,   // Binary digits of precision
-                            FLT_DIG,        // Decimal digits of precision
-                            FLT_MIN_EXP,    // Minimum exponent
-                            FLT_MAX_EXP,    // Maximum exponent
-                            FLT_MIN_10_EXP, // Minimum base 10 exponent
-                            FLT_MAX_10_EXP, // Maximum base 10 exponent
-                            0x7f800000u,    // First word of +infinity
-                            0x7f810000u,    // First word of quiet NaN
-                            0x7fc10000u,    // First word of signaling NaN
-                            true,           // conforms to iec559
-                            round_to_nearest>
-{
-public:
-  static float min()  { return FLT_MIN; }
-  static float denorm_min()  { return FLT_MIN; }
-  static float max()  { return FLT_MAX; }
-  static float epsilon()  { return FLT_EPSILON; }
-  static float round_error()  { return 0.5f; } // Units: ulps.
-};
-
-template<> class numeric_limits<double>
-  : public _Floating_limits<double, 
-                            DBL_MANT_DIG,   // Binary digits of precision
-                            DBL_DIG,        // Decimal digits of precision
-                            DBL_MIN_EXP,    // Minimum exponent
-                            DBL_MAX_EXP,    // Maximum exponent
-                            DBL_MIN_10_EXP, // Minimum base 10 exponent
-                            DBL_MAX_10_EXP, // Maximum base 10 exponent
-                            0x7ff00000u,    // First word of +infinity
-                            0x7ff10000u,    // First word of quiet NaN
-                            0x7ff90000u,    // First word of signaling NaN
-                            true,           // conforms to iec559
-                            round_to_nearest>
-{
-public:
-  static double min()  { return DBL_MIN; }
-  static double denorm_min()  { return DBL_MIN; }
-  static double max()  { return DBL_MAX; }
-  static double epsilon()  { return DBL_EPSILON; }
-  static double round_error()  { return 0.5; } // Units: ulps.
-};
-
-template<> class numeric_limits<long double>
-  : public _Floating_limits<long double, 
-                            LDBL_MANT_DIG,  // Binary digits of precision
-                            LDBL_DIG,       // Decimal digits of precision
-                            LDBL_MIN_EXP,   // Minimum exponent
-                            LDBL_MAX_EXP,   // Maximum exponent
-                            LDBL_MIN_10_EXP,// Minimum base 10 exponent
-                            LDBL_MAX_10_EXP,// Maximum base 10 exponent
-                            0x7ff00000u,    // First word of +infinity
-                            0x7ff10000u,    // First word of quiet NaN
-                            0x7ff90000u,    // First word of signaling NaN
-                            false,          // Doesn't conform to iec559
-                            round_to_nearest>
-{
-public:
-  static long double min()  { return LDBL_MIN; }
-  static long double denorm_min()  { return LDBL_MIN; }
-  static long double max()  { return LDBL_MAX; }
-  static long double epsilon()  { return LDBL_EPSILON; }
-  static long double round_error()  { return 4; } // Units: ulps.
-};
-
-BZ_NAMESPACE_END
-
diff --git a/weave/blitz-20001213/blitz/listinit.h b/weave/blitz-20001213/blitz/listinit.h
deleted file mode 100644
index bdb6d09..0000000
--- a/weave/blitz-20001213/blitz/listinit.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/***************************************************************************
- * blitz/listinit.h      Classes for initialization lists
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-/*
- * Initialization lists provide a convenient way to set the elements
- * of an array.  For example,
- *
- * Array<int,2> A(3,3);
- * A = 1, 0, 0,
- *     0, 1, 0,
- *     0, 0, 1;
- */
-
-#ifndef BZ_LISTINIT_H
-#define BZ_LISTINIT_H
-
-BZ_NAMESPACE(blitz)
-
-template<class T_numtype, class T_iterator>
-class ListInitializer {
-
-public:
-    ListInitializer(T_iterator iter)
-        : iter_(iter)
-    {
-    }
-
-    ListInitializer<T_numtype, T_iterator> operator,(T_numtype x)
-    {
-        *iter_ = x;
-        return ListInitializer<T_numtype, T_iterator>(iter_ + 1);
-    }
-
-private:
-    ListInitializer();
-
-protected:
-    T_iterator iter_;
-};
-
-template<class T_array, class T_iterator = _bz_typename T_array::T_numtype*>
-class ListInitializationSwitch {
-
-public:
-    typedef _bz_typename T_array::T_numtype T_numtype;
-
-    // HOMMEL990316:    added explicit default argument _bz_typename
-    // T_array::T_numtype*
-
-    ListInitializationSwitch(const ListInitializationSwitch<T_array,
-        _bz_typename T_array::T_numtype*>& lis)
-      : array_(lis.array_), value_(lis.value_), 
-          wipeOnDestruct_(_bz_true)
-    {
-        lis.disable();
-    }
-
-    ListInitializationSwitch(T_array& array, T_numtype value)
-        : array_(array), value_(value), wipeOnDestruct_(_bz_true)
-    { }
-
-    ~ListInitializationSwitch()
-    {
-        if (wipeOnDestruct_)
-            array_.initialize(value_);
-    }
-
-    ListInitializer<T_numtype, T_iterator> operator,(T_numtype x)
-    {
-        wipeOnDestruct_ = _bz_false;
-        T_iterator iter = array_.getInitializationIterator();
-        *iter = value_;
-        T_iterator iter2 = iter + 1;
-        *iter2 = x;
-        return ListInitializer<T_numtype, T_iterator>(iter2 + 1);
-    }
-
-    void disable() const
-    {
-        wipeOnDestruct_ = _bz_false;
-    }
-
-private:
-    ListInitializationSwitch();
-
-protected:
-    T_array& array_;
-    T_numtype value_;
-    mutable _bz_bool wipeOnDestruct_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_LISTINIT_H
-
diff --git a/weave/blitz-20001213/blitz/matbops.h b/weave/blitz-20001213/blitz/matbops.h
deleted file mode 100644
index 7984ba7..0000000
--- a/weave/blitz-20001213/blitz/matbops.h
+++ /dev/null
@@ -1,6070 +0,0 @@
-// Generated source file.  Do not edit.
-// Created by: genmatbops.cpp Aug  8 1997 15:21:36
-
-#ifndef BZ_MATBOPS_H
-#define BZ_MATBOPS_H
-
-BZ_NAMESPACE(blitz)
-
-#ifndef BZ_MATEXPR_H
- #error <blitz/matbops.h> must be included via <blitz/matexpr.h>
-#endif
-
-/****************************************************************************
- * Addition Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> + Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Add<P_numtype1, P_numtype2> > >
-operator+(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> + _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_Add<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator+(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Add<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> + int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_Add<P_numtype1, int> > >
-operator+(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Add<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> + float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_Add<P_numtype1, float> > >
-operator+(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Add<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> + double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_Add<P_numtype1, double> > >
-operator+(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Add<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> + long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_Add<P_numtype1, long double> > >
-operator+(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Add<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> + complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Add<P_numtype1, complex<float> > > >
-operator+(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Add<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> + complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Add<P_numtype1, complex<double> > > >
-operator+(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Add<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> + complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Add<P_numtype1, complex<long double> > > >
-operator+(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Add<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> + Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Add<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator+(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> + _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_Add<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator+(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> + int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_Add<_bz_typename P_expr1::T_numtype, int> > >
-operator+(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> + float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_Add<_bz_typename P_expr1::T_numtype, float> > >
-operator+(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> + double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_Add<_bz_typename P_expr1::T_numtype, double> > >
-operator+(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> + long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_Add<_bz_typename P_expr1::T_numtype, long double> > >
-operator+(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> + complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Add<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator+(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> + complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Add<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator+(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> + complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Add<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator+(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int + Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Add<int, P_numtype2> > >
-operator+(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Add<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int + _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_Add<int, _bz_typename P_expr2::T_numtype> > >
-operator+(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Add<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float + Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Add<float, P_numtype2> > >
-operator+(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Add<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float + _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_Add<float, _bz_typename P_expr2::T_numtype> > >
-operator+(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Add<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double + Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Add<double, P_numtype2> > >
-operator+(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Add<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double + _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_Add<double, _bz_typename P_expr2::T_numtype> > >
-operator+(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Add<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double + Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Add<long double, P_numtype2> > >
-operator+(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Add<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double + _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_Add<long double, _bz_typename P_expr2::T_numtype> > >
-operator+(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Add<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  + Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Add<complex<float> , P_numtype2> > >
-operator+(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Add<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  + _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_Add<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator+(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Add<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  + Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Add<complex<double> , P_numtype2> > >
-operator+(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Add<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  + _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_Add<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator+(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Add<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  + Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Add<complex<long double> , P_numtype2> > >
-operator+(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Add<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  + _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_Add<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator+(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Add<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Subtraction Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> - Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Subtract<P_numtype1, P_numtype2> > >
-operator-(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> - _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_Subtract<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator-(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Subtract<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> - int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_Subtract<P_numtype1, int> > >
-operator-(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Subtract<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> - float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_Subtract<P_numtype1, float> > >
-operator-(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Subtract<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> - double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_Subtract<P_numtype1, double> > >
-operator-(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Subtract<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> - long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_Subtract<P_numtype1, long double> > >
-operator-(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Subtract<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> - complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Subtract<P_numtype1, complex<float> > > >
-operator-(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Subtract<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> - complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Subtract<P_numtype1, complex<double> > > >
-operator-(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Subtract<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> - complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Subtract<P_numtype1, complex<long double> > > >
-operator-(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Subtract<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> - Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Subtract<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator-(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> - _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_Subtract<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator-(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> - int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_Subtract<_bz_typename P_expr1::T_numtype, int> > >
-operator-(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> - float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_Subtract<_bz_typename P_expr1::T_numtype, float> > >
-operator-(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> - double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_Subtract<_bz_typename P_expr1::T_numtype, double> > >
-operator-(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> - long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_Subtract<_bz_typename P_expr1::T_numtype, long double> > >
-operator-(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> - complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Subtract<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator-(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> - complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Subtract<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator-(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> - complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Subtract<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator-(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int - Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Subtract<int, P_numtype2> > >
-operator-(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Subtract<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int - _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_Subtract<int, _bz_typename P_expr2::T_numtype> > >
-operator-(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Subtract<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float - Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Subtract<float, P_numtype2> > >
-operator-(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Subtract<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float - _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_Subtract<float, _bz_typename P_expr2::T_numtype> > >
-operator-(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Subtract<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double - Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Subtract<double, P_numtype2> > >
-operator-(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Subtract<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double - _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_Subtract<double, _bz_typename P_expr2::T_numtype> > >
-operator-(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Subtract<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double - Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Subtract<long double, P_numtype2> > >
-operator-(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Subtract<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double - _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_Subtract<long double, _bz_typename P_expr2::T_numtype> > >
-operator-(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Subtract<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  - Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Subtract<complex<float> , P_numtype2> > >
-operator-(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Subtract<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  - _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_Subtract<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator-(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Subtract<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  - Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Subtract<complex<double> , P_numtype2> > >
-operator-(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Subtract<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  - _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_Subtract<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator-(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Subtract<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  - Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Subtract<complex<long double> , P_numtype2> > >
-operator-(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Subtract<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  - _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_Subtract<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator-(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Subtract<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Multiplication Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> * Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Multiply<P_numtype1, P_numtype2> > >
-operator*(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> * _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_Multiply<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator*(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Multiply<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> * int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_Multiply<P_numtype1, int> > >
-operator*(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Multiply<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> * float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_Multiply<P_numtype1, float> > >
-operator*(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Multiply<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> * double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_Multiply<P_numtype1, double> > >
-operator*(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Multiply<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> * long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_Multiply<P_numtype1, long double> > >
-operator*(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Multiply<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> * complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Multiply<P_numtype1, complex<float> > > >
-operator*(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Multiply<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> * complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Multiply<P_numtype1, complex<double> > > >
-operator*(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Multiply<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> * complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Multiply<P_numtype1, complex<long double> > > >
-operator*(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Multiply<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> * Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Multiply<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator*(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> * _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_Multiply<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator*(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> * int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_Multiply<_bz_typename P_expr1::T_numtype, int> > >
-operator*(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> * float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_Multiply<_bz_typename P_expr1::T_numtype, float> > >
-operator*(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> * double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_Multiply<_bz_typename P_expr1::T_numtype, double> > >
-operator*(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> * long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_Multiply<_bz_typename P_expr1::T_numtype, long double> > >
-operator*(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> * complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Multiply<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator*(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> * complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Multiply<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator*(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> * complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Multiply<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator*(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int * Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Multiply<int, P_numtype2> > >
-operator*(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Multiply<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int * _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_Multiply<int, _bz_typename P_expr2::T_numtype> > >
-operator*(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Multiply<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float * Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Multiply<float, P_numtype2> > >
-operator*(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Multiply<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float * _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_Multiply<float, _bz_typename P_expr2::T_numtype> > >
-operator*(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Multiply<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double * Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Multiply<double, P_numtype2> > >
-operator*(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Multiply<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double * _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_Multiply<double, _bz_typename P_expr2::T_numtype> > >
-operator*(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Multiply<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double * Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Multiply<long double, P_numtype2> > >
-operator*(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Multiply<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double * _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_Multiply<long double, _bz_typename P_expr2::T_numtype> > >
-operator*(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Multiply<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  * Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Multiply<complex<float> , P_numtype2> > >
-operator*(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Multiply<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  * _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_Multiply<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator*(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Multiply<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  * Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Multiply<complex<double> , P_numtype2> > >
-operator*(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Multiply<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  * _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_Multiply<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator*(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Multiply<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  * Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Multiply<complex<long double> , P_numtype2> > >
-operator*(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Multiply<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  * _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_Multiply<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator*(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Multiply<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Division Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> / Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Divide<P_numtype1, P_numtype2> > >
-operator/(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> / _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_Divide<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator/(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Divide<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> / int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_Divide<P_numtype1, int> > >
-operator/(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Divide<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> / float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_Divide<P_numtype1, float> > >
-operator/(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Divide<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> / double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_Divide<P_numtype1, double> > >
-operator/(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Divide<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> / long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_Divide<P_numtype1, long double> > >
-operator/(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Divide<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> / complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Divide<P_numtype1, complex<float> > > >
-operator/(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Divide<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> / complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Divide<P_numtype1, complex<double> > > >
-operator/(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Divide<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> / complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Divide<P_numtype1, complex<long double> > > >
-operator/(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Divide<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> / Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Divide<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator/(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> / _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_Divide<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator/(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> / int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_Divide<_bz_typename P_expr1::T_numtype, int> > >
-operator/(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> / float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_Divide<_bz_typename P_expr1::T_numtype, float> > >
-operator/(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> / double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_Divide<_bz_typename P_expr1::T_numtype, double> > >
-operator/(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> / long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_Divide<_bz_typename P_expr1::T_numtype, long double> > >
-operator/(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> / complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Divide<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator/(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> / complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Divide<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator/(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> / complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Divide<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator/(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int / Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Divide<int, P_numtype2> > >
-operator/(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Divide<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int / _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_Divide<int, _bz_typename P_expr2::T_numtype> > >
-operator/(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Divide<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float / Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Divide<float, P_numtype2> > >
-operator/(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Divide<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float / _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_Divide<float, _bz_typename P_expr2::T_numtype> > >
-operator/(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Divide<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double / Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Divide<double, P_numtype2> > >
-operator/(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Divide<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double / _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_Divide<double, _bz_typename P_expr2::T_numtype> > >
-operator/(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Divide<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double / Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Divide<long double, P_numtype2> > >
-operator/(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Divide<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double / _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_Divide<long double, _bz_typename P_expr2::T_numtype> > >
-operator/(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Divide<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  / Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Divide<complex<float> , P_numtype2> > >
-operator/(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Divide<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  / _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_Divide<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator/(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Divide<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  / Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Divide<complex<double> , P_numtype2> > >
-operator/(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Divide<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  / _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_Divide<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator/(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Divide<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  / Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Divide<complex<long double> , P_numtype2> > >
-operator/(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Divide<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  / _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_Divide<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator/(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Divide<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Modulus Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> % Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Mod<P_numtype1, P_numtype2> > >
-operator%(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> % _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_Mod<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator%(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Mod<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> % int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_Mod<P_numtype1, int> > >
-operator%(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Mod<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> % Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Mod<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator%(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Mod<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> % _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_Mod<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator%(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Mod<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> % int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_Mod<_bz_typename P_expr1::T_numtype, int> > >
-operator%(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Mod<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// int % Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Mod<int, P_numtype2> > >
-operator%(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Mod<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int % _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_Mod<int, _bz_typename P_expr2::T_numtype> > >
-operator%(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Mod<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-/****************************************************************************
- * Bitwise XOR Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> ^ Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_BitwiseXOR<P_numtype1, P_numtype2> > >
-operator^(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> ^ _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_BitwiseXOR<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator^(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_BitwiseXOR<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> ^ int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_BitwiseXOR<P_numtype1, int> > >
-operator^(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_BitwiseXOR<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> ^ Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator^(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> ^ _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator^(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> ^ int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, int> > >
-operator^(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// int ^ Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_BitwiseXOR<int, P_numtype2> > >
-operator^(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_BitwiseXOR<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int ^ _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_BitwiseXOR<int, _bz_typename P_expr2::T_numtype> > >
-operator^(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_BitwiseXOR<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-/****************************************************************************
- * Bitwise And Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> & Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_BitwiseAnd<P_numtype1, P_numtype2> > >
-operator&(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> & _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_BitwiseAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator&(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_BitwiseAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> & int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_BitwiseAnd<P_numtype1, int> > >
-operator&(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_BitwiseAnd<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> & Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator&(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> & _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator&(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> & int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, int> > >
-operator&(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// int & Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_BitwiseAnd<int, P_numtype2> > >
-operator&(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_BitwiseAnd<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int & _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_BitwiseAnd<int, _bz_typename P_expr2::T_numtype> > >
-operator&(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_BitwiseAnd<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-/****************************************************************************
- * Bitwise Or Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> | Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_BitwiseOr<P_numtype1, P_numtype2> > >
-operator|(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> | _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_BitwiseOr<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator|(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_BitwiseOr<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> | int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_BitwiseOr<P_numtype1, int> > >
-operator|(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_BitwiseOr<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> | Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator|(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> | _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator|(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> | int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, int> > >
-operator|(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// int | Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_BitwiseOr<int, P_numtype2> > >
-operator|(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_BitwiseOr<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int | _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_BitwiseOr<int, _bz_typename P_expr2::T_numtype> > >
-operator|(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_BitwiseOr<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-/****************************************************************************
- * Shift right Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> >> Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_ShiftRight<P_numtype1, P_numtype2> > >
-operator>>(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> >> _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_ShiftRight<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator>>(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_ShiftRight<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> >> int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_ShiftRight<P_numtype1, int> > >
-operator>>(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_ShiftRight<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> >> Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_ShiftRight<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator>>(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> >> _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_ShiftRight<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator>>(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> >> int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_ShiftRight<_bz_typename P_expr1::T_numtype, int> > >
-operator>>(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// int >> Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_ShiftRight<int, P_numtype2> > >
-operator>>(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_ShiftRight<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int >> _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_ShiftRight<int, _bz_typename P_expr2::T_numtype> > >
-operator>>(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_ShiftRight<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-/****************************************************************************
- * Shift left Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> << Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_ShiftLeft<P_numtype1, P_numtype2> > >
-operator<<(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> << _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_ShiftLeft<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator<<(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_ShiftLeft<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> << int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_ShiftLeft<P_numtype1, int> > >
-operator<<(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_ShiftLeft<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> << Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator<<(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> << _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator<<(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> << int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, int> > >
-operator<<(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// int << Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_ShiftLeft<int, P_numtype2> > >
-operator<<(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_ShiftLeft<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int << _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_ShiftLeft<int, _bz_typename P_expr2::T_numtype> > >
-operator<<(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_ShiftLeft<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-/****************************************************************************
- * Greater-than Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> > Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Greater<P_numtype1, P_numtype2> > >
-operator>(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> > _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_Greater<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator>(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Greater<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> > int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_Greater<P_numtype1, int> > >
-operator>(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Greater<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> > float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_Greater<P_numtype1, float> > >
-operator>(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Greater<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> > double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_Greater<P_numtype1, double> > >
-operator>(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Greater<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> > long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_Greater<P_numtype1, long double> > >
-operator>(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Greater<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> > complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Greater<P_numtype1, complex<float> > > >
-operator>(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Greater<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> > complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Greater<P_numtype1, complex<double> > > >
-operator>(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Greater<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> > complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Greater<P_numtype1, complex<long double> > > >
-operator>(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Greater<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> > Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Greater<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator>(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> > _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_Greater<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator>(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> > int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_Greater<_bz_typename P_expr1::T_numtype, int> > >
-operator>(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> > float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_Greater<_bz_typename P_expr1::T_numtype, float> > >
-operator>(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> > double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_Greater<_bz_typename P_expr1::T_numtype, double> > >
-operator>(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> > long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_Greater<_bz_typename P_expr1::T_numtype, long double> > >
-operator>(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> > complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Greater<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator>(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> > complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Greater<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator>(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> > complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Greater<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator>(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int > Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Greater<int, P_numtype2> > >
-operator>(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Greater<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int > _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_Greater<int, _bz_typename P_expr2::T_numtype> > >
-operator>(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Greater<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float > Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Greater<float, P_numtype2> > >
-operator>(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Greater<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float > _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_Greater<float, _bz_typename P_expr2::T_numtype> > >
-operator>(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Greater<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double > Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Greater<double, P_numtype2> > >
-operator>(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Greater<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double > _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_Greater<double, _bz_typename P_expr2::T_numtype> > >
-operator>(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Greater<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double > Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Greater<long double, P_numtype2> > >
-operator>(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Greater<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double > _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_Greater<long double, _bz_typename P_expr2::T_numtype> > >
-operator>(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Greater<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  > Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Greater<complex<float> , P_numtype2> > >
-operator>(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Greater<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  > _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_Greater<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator>(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Greater<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  > Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Greater<complex<double> , P_numtype2> > >
-operator>(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Greater<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  > _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_Greater<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator>(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Greater<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  > Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Greater<complex<long double> , P_numtype2> > >
-operator>(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Greater<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  > _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_Greater<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator>(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Greater<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Less-than Operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> < Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Less<P_numtype1, P_numtype2> > >
-operator<(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> < _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_Less<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator<(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Less<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> < int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_Less<P_numtype1, int> > >
-operator<(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Less<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> < float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_Less<P_numtype1, float> > >
-operator<(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Less<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> < double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_Less<P_numtype1, double> > >
-operator<(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Less<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> < long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_Less<P_numtype1, long double> > >
-operator<(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Less<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> < complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Less<P_numtype1, complex<float> > > >
-operator<(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Less<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> < complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Less<P_numtype1, complex<double> > > >
-operator<(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Less<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> < complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Less<P_numtype1, complex<long double> > > >
-operator<(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Less<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> < Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Less<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator<(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> < _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_Less<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator<(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> < int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_Less<_bz_typename P_expr1::T_numtype, int> > >
-operator<(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> < float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_Less<_bz_typename P_expr1::T_numtype, float> > >
-operator<(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> < double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_Less<_bz_typename P_expr1::T_numtype, double> > >
-operator<(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> < long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_Less<_bz_typename P_expr1::T_numtype, long double> > >
-operator<(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> < complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Less<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator<(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> < complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Less<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator<(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> < complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Less<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator<(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int < Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Less<int, P_numtype2> > >
-operator<(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Less<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int < _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_Less<int, _bz_typename P_expr2::T_numtype> > >
-operator<(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Less<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float < Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Less<float, P_numtype2> > >
-operator<(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Less<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float < _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_Less<float, _bz_typename P_expr2::T_numtype> > >
-operator<(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Less<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double < Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Less<double, P_numtype2> > >
-operator<(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Less<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double < _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_Less<double, _bz_typename P_expr2::T_numtype> > >
-operator<(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Less<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double < Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Less<long double, P_numtype2> > >
-operator<(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Less<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double < _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_Less<long double, _bz_typename P_expr2::T_numtype> > >
-operator<(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Less<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  < Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Less<complex<float> , P_numtype2> > >
-operator<(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Less<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  < _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_Less<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator<(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Less<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  < Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Less<complex<double> , P_numtype2> > >
-operator<(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Less<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  < _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_Less<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator<(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Less<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  < Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Less<complex<long double> , P_numtype2> > >
-operator<(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Less<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  < _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_Less<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator<(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Less<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Greater or equal (>=) operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> >= Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_GreaterOrEqual<P_numtype1, P_numtype2> > >
-operator>=(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> >= _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_GreaterOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator>=(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_GreaterOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> >= int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_GreaterOrEqual<P_numtype1, int> > >
-operator>=(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_GreaterOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> >= float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_GreaterOrEqual<P_numtype1, float> > >
-operator>=(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_GreaterOrEqual<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> >= double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_GreaterOrEqual<P_numtype1, double> > >
-operator>=(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_GreaterOrEqual<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> >= long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_GreaterOrEqual<P_numtype1, long double> > >
-operator>=(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_GreaterOrEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> >= complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_GreaterOrEqual<P_numtype1, complex<float> > > >
-operator>=(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_GreaterOrEqual<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> >= complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_GreaterOrEqual<P_numtype1, complex<double> > > >
-operator>=(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_GreaterOrEqual<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> >= complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_GreaterOrEqual<P_numtype1, complex<long double> > > >
-operator>=(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_GreaterOrEqual<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> >= Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator>=(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> >= _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator>=(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> >= int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, int> > >
-operator>=(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> >= float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, float> > >
-operator>=(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> >= double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, double> > >
-operator>=(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> >= long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, long double> > >
-operator>=(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> >= complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator>=(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> >= complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator>=(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> >= complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator>=(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int >= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_GreaterOrEqual<int, P_numtype2> > >
-operator>=(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_GreaterOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int >= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_GreaterOrEqual<int, _bz_typename P_expr2::T_numtype> > >
-operator>=(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_GreaterOrEqual<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float >= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_GreaterOrEqual<float, P_numtype2> > >
-operator>=(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_GreaterOrEqual<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float >= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_GreaterOrEqual<float, _bz_typename P_expr2::T_numtype> > >
-operator>=(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_GreaterOrEqual<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double >= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_GreaterOrEqual<double, P_numtype2> > >
-operator>=(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_GreaterOrEqual<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double >= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_GreaterOrEqual<double, _bz_typename P_expr2::T_numtype> > >
-operator>=(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_GreaterOrEqual<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double >= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_GreaterOrEqual<long double, P_numtype2> > >
-operator>=(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_GreaterOrEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double >= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_GreaterOrEqual<long double, _bz_typename P_expr2::T_numtype> > >
-operator>=(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_GreaterOrEqual<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  >= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_GreaterOrEqual<complex<float> , P_numtype2> > >
-operator>=(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_GreaterOrEqual<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  >= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_GreaterOrEqual<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator>=(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_GreaterOrEqual<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  >= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_GreaterOrEqual<complex<double> , P_numtype2> > >
-operator>=(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_GreaterOrEqual<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  >= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_GreaterOrEqual<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator>=(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_GreaterOrEqual<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  >= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_GreaterOrEqual<complex<long double> , P_numtype2> > >
-operator>=(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_GreaterOrEqual<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  >= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_GreaterOrEqual<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator>=(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_GreaterOrEqual<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Less or equal (<=) operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> <= Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LessOrEqual<P_numtype1, P_numtype2> > >
-operator<=(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> <= _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_LessOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator<=(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LessOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> <= int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_LessOrEqual<P_numtype1, int> > >
-operator<=(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_LessOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> <= float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_LessOrEqual<P_numtype1, float> > >
-operator<=(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_LessOrEqual<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> <= double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_LessOrEqual<P_numtype1, double> > >
-operator<=(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_LessOrEqual<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> <= long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_LessOrEqual<P_numtype1, long double> > >
-operator<=(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_LessOrEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> <= complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_LessOrEqual<P_numtype1, complex<float> > > >
-operator<=(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_LessOrEqual<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> <= complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_LessOrEqual<P_numtype1, complex<double> > > >
-operator<=(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_LessOrEqual<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> <= complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_LessOrEqual<P_numtype1, complex<long double> > > >
-operator<=(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_LessOrEqual<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> <= Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator<=(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> <= _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator<=(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> <= int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, int> > >
-operator<=(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> <= float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, float> > >
-operator<=(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> <= double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, double> > >
-operator<=(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> <= long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, long double> > >
-operator<=(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> <= complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator<=(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> <= complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator<=(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> <= complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator<=(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int <= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LessOrEqual<int, P_numtype2> > >
-operator<=(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LessOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int <= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_LessOrEqual<int, _bz_typename P_expr2::T_numtype> > >
-operator<=(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LessOrEqual<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float <= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LessOrEqual<float, P_numtype2> > >
-operator<=(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LessOrEqual<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float <= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_LessOrEqual<float, _bz_typename P_expr2::T_numtype> > >
-operator<=(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LessOrEqual<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double <= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LessOrEqual<double, P_numtype2> > >
-operator<=(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LessOrEqual<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double <= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_LessOrEqual<double, _bz_typename P_expr2::T_numtype> > >
-operator<=(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LessOrEqual<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double <= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LessOrEqual<long double, P_numtype2> > >
-operator<=(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LessOrEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double <= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_LessOrEqual<long double, _bz_typename P_expr2::T_numtype> > >
-operator<=(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LessOrEqual<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  <= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LessOrEqual<complex<float> , P_numtype2> > >
-operator<=(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LessOrEqual<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  <= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_LessOrEqual<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator<=(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LessOrEqual<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  <= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LessOrEqual<complex<double> , P_numtype2> > >
-operator<=(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LessOrEqual<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  <= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_LessOrEqual<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator<=(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LessOrEqual<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  <= Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LessOrEqual<complex<long double> , P_numtype2> > >
-operator<=(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LessOrEqual<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  <= _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_LessOrEqual<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator<=(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LessOrEqual<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Equality operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> == Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Equal<P_numtype1, P_numtype2> > >
-operator==(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> == _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_Equal<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator==(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Equal<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> == int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_Equal<P_numtype1, int> > >
-operator==(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Equal<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> == float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_Equal<P_numtype1, float> > >
-operator==(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Equal<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> == double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_Equal<P_numtype1, double> > >
-operator==(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Equal<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> == long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_Equal<P_numtype1, long double> > >
-operator==(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Equal<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> == complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Equal<P_numtype1, complex<float> > > >
-operator==(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Equal<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> == complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Equal<P_numtype1, complex<double> > > >
-operator==(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Equal<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> == complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Equal<P_numtype1, complex<long double> > > >
-operator==(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Equal<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> == Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Equal<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator==(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> == _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_Equal<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator==(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> == int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_Equal<_bz_typename P_expr1::T_numtype, int> > >
-operator==(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> == float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_Equal<_bz_typename P_expr1::T_numtype, float> > >
-operator==(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> == double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_Equal<_bz_typename P_expr1::T_numtype, double> > >
-operator==(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> == long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_Equal<_bz_typename P_expr1::T_numtype, long double> > >
-operator==(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> == complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_Equal<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator==(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> == complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_Equal<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator==(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> == complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_Equal<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator==(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int == Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Equal<int, P_numtype2> > >
-operator==(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Equal<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int == _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_Equal<int, _bz_typename P_expr2::T_numtype> > >
-operator==(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Equal<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float == Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Equal<float, P_numtype2> > >
-operator==(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Equal<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float == _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_Equal<float, _bz_typename P_expr2::T_numtype> > >
-operator==(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Equal<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double == Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Equal<double, P_numtype2> > >
-operator==(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Equal<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double == _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_Equal<double, _bz_typename P_expr2::T_numtype> > >
-operator==(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Equal<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double == Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Equal<long double, P_numtype2> > >
-operator==(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Equal<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double == _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_Equal<long double, _bz_typename P_expr2::T_numtype> > >
-operator==(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Equal<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  == Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Equal<complex<float> , P_numtype2> > >
-operator==(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Equal<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  == _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_Equal<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator==(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Equal<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  == Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Equal<complex<double> , P_numtype2> > >
-operator==(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Equal<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  == _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_Equal<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator==(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Equal<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  == Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_Equal<complex<long double> , P_numtype2> > >
-operator==(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_Equal<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  == _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_Equal<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator==(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_Equal<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Not-equal operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> != Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_NotEqual<P_numtype1, P_numtype2> > >
-operator!=(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> != _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_NotEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator!=(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_NotEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> != int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_NotEqual<P_numtype1, int> > >
-operator!=(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_NotEqual<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> != float
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<float>, _bz_NotEqual<P_numtype1, float> > >
-operator!=(const Matrix<P_numtype1, P_struct1>& d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<float>, 
-      _bz_NotEqual<P_numtype1, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> != double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<double>, _bz_NotEqual<P_numtype1, double> > >
-operator!=(const Matrix<P_numtype1, P_struct1>& d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<double>, 
-      _bz_NotEqual<P_numtype1, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// Matrix<P_numtype1, P_struct1> != long double
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<long double>, _bz_NotEqual<P_numtype1, long double> > >
-operator!=(const Matrix<P_numtype1, P_struct1>& d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_NotEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> != complex<float> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<float> >, _bz_NotEqual<P_numtype1, complex<float> > > >
-operator!=(const Matrix<P_numtype1, P_struct1>& d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_NotEqual<P_numtype1, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> != complex<double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<double> >, _bz_NotEqual<P_numtype1, complex<double> > > >
-operator!=(const Matrix<P_numtype1, P_struct1>& d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_NotEqual<P_numtype1, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// Matrix<P_numtype1, P_struct1> != complex<long double> 
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_NotEqual<P_numtype1, complex<long double> > > >
-operator!=(const Matrix<P_numtype1, P_struct1>& d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_NotEqual<P_numtype1, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// _bz_MatExpr<P_expr1> != Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_NotEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator!=(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> != _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_NotEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator!=(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> != int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_NotEqual<_bz_typename P_expr1::T_numtype, int> > >
-operator!=(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> != float
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<float>, _bz_NotEqual<_bz_typename P_expr1::T_numtype, float> > >
-operator!=(_bz_MatExpr<P_expr1> d1, float d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<float>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<float>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> != double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<double>, _bz_NotEqual<_bz_typename P_expr1::T_numtype, double> > >
-operator!=(_bz_MatExpr<P_expr1> d1, double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<double>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<double>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> != long double
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<long double>, _bz_NotEqual<_bz_typename P_expr1::T_numtype, long double> > >
-operator!=(_bz_MatExpr<P_expr1> d1, long double d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<long double>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<long double>(d2)));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> != complex<float> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<float> >, _bz_NotEqual<_bz_typename P_expr1::T_numtype, complex<float> > > >
-operator!=(_bz_MatExpr<P_expr1> d1, complex<float>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<float> >, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, complex<float> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<float> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> != complex<double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<double> >, _bz_NotEqual<_bz_typename P_expr1::T_numtype, complex<double> > > >
-operator!=(_bz_MatExpr<P_expr1> d1, complex<double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<double> >, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, complex<double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// _bz_MatExpr<P_expr1> != complex<long double> 
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<complex<long double> >, _bz_NotEqual<_bz_typename P_expr1::T_numtype, complex<long double> > > >
-operator!=(_bz_MatExpr<P_expr1> d1, complex<long double>  d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<complex<long double> >, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, complex<long double> > > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<complex<long double> >(d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// int != Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_NotEqual<int, P_numtype2> > >
-operator!=(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_NotEqual<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int != _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_NotEqual<int, _bz_typename P_expr2::T_numtype> > >
-operator!=(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_NotEqual<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-// float != Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_NotEqual<float, P_numtype2> > >
-operator!=(float d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_NotEqual<float, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2._bz_getRef()));
-}
-
-// float != _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<float>,
-    _bz_MatExpr<P_expr2>, _bz_NotEqual<float, _bz_typename P_expr2::T_numtype> > >
-operator!=(float d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<float>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_NotEqual<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<float>(d1), 
-        d2));
-}
-
-// double != Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_NotEqual<double, P_numtype2> > >
-operator!=(double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_NotEqual<double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2._bz_getRef()));
-}
-
-// double != _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<double>,
-    _bz_MatExpr<P_expr2>, _bz_NotEqual<double, _bz_typename P_expr2::T_numtype> > >
-operator!=(double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_NotEqual<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<double>(d1), 
-        d2));
-}
-
-// long double != Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_NotEqual<long double, P_numtype2> > >
-operator!=(long double d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_NotEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2._bz_getRef()));
-}
-
-// long double != _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<long double>,
-    _bz_MatExpr<P_expr2>, _bz_NotEqual<long double, _bz_typename P_expr2::T_numtype> > >
-operator!=(long double d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<long double>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_NotEqual<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<long double>(d1), 
-        d2));
-}
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  != Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_NotEqual<complex<float> , P_numtype2> > >
-operator!=(complex<float>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_NotEqual<complex<float> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<float>  != _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-    _bz_MatExpr<P_expr2>, _bz_NotEqual<complex<float> , _bz_typename P_expr2::T_numtype> > >
-operator!=(complex<float>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<float> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_NotEqual<complex<float> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<float> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  != Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_NotEqual<complex<double> , P_numtype2> > >
-operator!=(complex<double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_NotEqual<complex<double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<double>  != _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-    _bz_MatExpr<P_expr2>, _bz_NotEqual<complex<double> , _bz_typename P_expr2::T_numtype> > >
-operator!=(complex<double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_NotEqual<complex<double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  != Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_NotEqual<complex<long double> , P_numtype2> > >
-operator!=(complex<long double>  d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_NotEqual<complex<long double> , P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2._bz_getRef()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-// complex<long double>  != _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-    _bz_MatExpr<P_expr2>, _bz_NotEqual<complex<long double> , _bz_typename P_expr2::T_numtype> > >
-operator!=(complex<long double>  d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<complex<long double> >,
-      _bz_MatExpr<P_expr2>, 
-      _bz_NotEqual<complex<long double> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<complex<long double> >(d1), 
-        d2));
-}
-#endif // BZ_HAVE_COMPLEX
-/****************************************************************************
- * Logical AND operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> && Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LogicalAnd<P_numtype1, P_numtype2> > >
-operator&&(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> && _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_LogicalAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator&&(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LogicalAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> && int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_LogicalAnd<P_numtype1, int> > >
-operator&&(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_LogicalAnd<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> && Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator&&(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> && _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator&&(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> && int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, int> > >
-operator&&(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// int && Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LogicalAnd<int, P_numtype2> > >
-operator&&(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LogicalAnd<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int && _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_LogicalAnd<int, _bz_typename P_expr2::T_numtype> > >
-operator&&(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LogicalAnd<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-/****************************************************************************
- * Logical OR operators
- ****************************************************************************/
-
-// Matrix<P_numtype1, P_struct1> || Matrix<P_numtype2, P_struct2>
-template<class P_numtype1, class P_struct1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LogicalOr<P_numtype1, P_numtype2> > >
-operator||(const Matrix<P_numtype1, P_struct1>& d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2._bz_getRef()));
-}
-
-// Matrix<P_numtype1, P_struct1> || _bz_MatExpr<P_expr2>
-template<class P_numtype1, class P_struct1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExpr<P_expr2>, _bz_LogicalOr<P_numtype1, _bz_typename P_expr2::T_numtype> > >
-operator||(const Matrix<P_numtype1, P_struct1>& d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LogicalOr<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        d2));
-}
-
-// Matrix<P_numtype1, P_struct1> || int
-template<class P_numtype1, class P_struct1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-    _bz_MatExprConstant<int>, _bz_LogicalOr<P_numtype1, int> > >
-operator||(const Matrix<P_numtype1, P_struct1>& d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatrixRef<P_numtype1, P_struct1>,
-      _bz_MatExprConstant<int>, 
-      _bz_LogicalOr<P_numtype1, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1._bz_getRef(), 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// _bz_MatExpr<P_expr1> || Matrix<P_numtype2, P_struct2>
-template<class P_expr1, class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LogicalOr<_bz_typename P_expr1::T_numtype, P_numtype2> > >
-operator||(_bz_MatExpr<P_expr1> d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2._bz_getRef()));
-}
-
-// _bz_MatExpr<P_expr1> || _bz_MatExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExpr<P_expr2>, _bz_LogicalOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > >
-operator||(_bz_MatExpr<P_expr1> d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        d2));
-}
-
-// _bz_MatExpr<P_expr1> || int
-template<class P_expr1>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExpr<P_expr1>,
-    _bz_MatExprConstant<int>, _bz_LogicalOr<_bz_typename P_expr1::T_numtype, int> > >
-operator||(_bz_MatExpr<P_expr1> d1, int d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExpr<P_expr1>,
-      _bz_MatExprConstant<int>, 
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(d1, 
-        _bz_MatExprConstant<int>(d2)));
-}
-
-// int || Matrix<P_numtype2, P_struct2>
-template<class P_numtype2, class P_struct2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatrixRef<P_numtype2, P_struct2>, _bz_LogicalOr<int, P_numtype2> > >
-operator||(int d1, const Matrix<P_numtype2, P_struct2>& d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatrixRef<P_numtype2, P_struct2>, 
-      _bz_LogicalOr<int, P_numtype2> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2._bz_getRef()));
-}
-
-// int || _bz_MatExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_MatExpr<_bz_MatExprOp<_bz_MatExprConstant<int>,
-    _bz_MatExpr<P_expr2>, _bz_LogicalOr<int, _bz_typename P_expr2::T_numtype> > >
-operator||(int d1, _bz_MatExpr<P_expr2> d2)
-{
-    typedef _bz_MatExprOp<_bz_MatExprConstant<int>,
-      _bz_MatExpr<P_expr2>, 
-      _bz_LogicalOr<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_MatExpr<T_expr>(T_expr(_bz_MatExprConstant<int>(d1), 
-        d2));
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATBOPS_H
diff --git a/weave/blitz-20001213/blitz/matdiag.h b/weave/blitz-20001213/blitz/matdiag.h
deleted file mode 100644
index 8712115..0000000
--- a/weave/blitz-20001213/blitz/matdiag.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/***************************************************************************
- * blitz/matdiag.h      Declarations for Diagonal matrices 
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_MATDIAG_H
-#define BZ_MATDIAG_H
-
-#ifndef BZ_MSTRUCT_H
- #error <blitz/matdiag.h> must be included via <blitz/mstruct.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Diagonal matrix
-// [ 0 . . . ]
-// [ . 1 . . ]
-// [ . . 2 . ]
-// [ . . . 3 ]
-
-class DiagonalIterator {
-public:
-    DiagonalIterator(unsigned rows, unsigned cols)
-    {
-        BZPRECONDITION(rows == cols);
-        size_ = rows;
-        i_ = 0;
-    }
-
-    operator _bz_bool() const
-    {
-        return i_ < size_;
-    }
-
-    void operator++()
-    {
-        ++i_;
-    }
-
-    unsigned row() const
-    { return i_; }
-
-    unsigned col() const
-    { return i_; }
-
-    unsigned offset() const
-    { return i_; }
-
-protected:
-    unsigned i_, size_;
-};
-
-class Diagonal : public MatrixStructure {
-
-public:
-    typedef DiagonalIterator T_iterator;
-
-    Diagonal()
-        : size_(0)
-    { }
-
-    Diagonal(unsigned size)
-        : size_(size)
-    { }
-
-    Diagonal(unsigned rows, unsigned cols)
-        : size_(rows)
-    {
-        BZPRECONDITION(rows == cols);
-    }
-
-    unsigned columns() const
-    { return size_; }
-
-    unsigned coordToOffset(unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        BZPRECONDITION(i == j);
-        return i;
-    }
-
-    unsigned firstInRow(unsigned i) const
-    { return i; }
-
-    template<class T_numtype>
-    T_numtype get(const T_numtype * _bz_restrict data,
-        unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        if (i == j)
-            return data[coordToOffset(i,j)];
-        else
-            return ZeroElement<T_numtype>::zero();
-    }
-
-    template<class T_numtype>
-    T_numtype& get(T_numtype * _bz_restrict data, unsigned i, unsigned j)
-    {
-        BZPRECONDITION(inRange(i,j));
-        if (i == j)
-            return data[coordToOffset(i,j)];
-        else
-            return ZeroElement<T_numtype>::zero();
-    }
-
-    unsigned lastInRow(unsigned i) const
-    { return i; }
-
-    unsigned firstInCol(unsigned j) const
-    { return j; }
-
-    unsigned lastInCol(unsigned j) const
-    { return j; }
-
-    _bz_bool inRange(unsigned i, unsigned j) const
-    {
-        return (i < size_) && (j < size_);
-    }
-
-    unsigned numElements() const
-    { return size_; }
-
-    unsigned rows() const
-    { return size_; }
-
-    void resize(unsigned size)
-    {
-        size_ = size;
-    }
-
-    void resize(unsigned rows, unsigned cols)
-    {
-        BZPRECONDITION(rows == cols);
-        size_  = rows;
-    }
-
-private:
-    unsigned size_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATSYMM_H
-
diff --git a/weave/blitz-20001213/blitz/matexpr.h b/weave/blitz-20001213/blitz/matexpr.h
deleted file mode 100644
index 74a2b89..0000000
--- a/weave/blitz-20001213/blitz/matexpr.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/***************************************************************************
- * blitz/matexpr.h      Matrix<P_numtype, P_structure> expression templates
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_MATEXPR_H
-#define BZ_MATEXPR_H
-
-#ifndef BZ_MATRIX_H
- #error <blitz/matexpr.h> must be included via <blitz/matrix.h>
-#endif
-
-#include <blitz/applics.h>
-
-BZ_NAMESPACE(blitz)
-
-// BlitzMatrixExpressionsBase is a dummy class provided for users of
-// graphical class browsers.  
-class BlitzMatrixExpressionsBase { };
-
-template<class P_expr>
-class _bz_MatExpr : public BlitzMatrixExpressionsBase {
-
-public:
-    typedef P_expr T_expr;
-    typedef _bz_typename T_expr::T_numtype T_numtype;
-
-#ifdef BZ_PASS_EXPR_BY_VALUE
-    _bz_MatExpr(T_expr a)
-        : iter_(a)
-    { }
-#else
-    _bz_MatExpr(const T_expr& a)
-        : iter_(a)
-    { }
-#endif
-
-    T_numtype operator()(unsigned i, unsigned j) const
-    { return iter_(i,j); }
-
-    unsigned rows(unsigned recommendedRows) const
-    { return iter_.rows(recommendedRows); }
-
-    unsigned cols(unsigned recommendedCols) const
-    { return iter_.cols(recommendedCols); }
-
-private:
-    T_expr iter_;
-};
-
-template<class P_expr1, class P_expr2, class P_op>
-class _bz_MatExprOp : public BlitzMatrixExpressionsBase {
-
-public:
-    typedef P_expr1 T_expr1;
-    typedef P_expr2 T_expr2;
-    typedef _bz_typename T_expr1::T_numtype T_numtype1;
-    typedef _bz_typename T_expr2::T_numtype T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1, T_numtype2) T_numtype;
-    typedef P_op    T_op;
-
-#ifdef BZ_PASS_EXPR_BY_VALUE
-    _bz_MatExprOp(T_expr1 a, T_expr2 b)
-        : iter1_(a), iter2_(b)
-    { }
-#else
-    _bz_MatExprOp(const T_expr1& a, const T_expr2& b)
-        : iter1_(a), iter2_(b)
-    { }
-#endif
-
-    T_numtype operator()(unsigned i, unsigned j) const
-    { return T_op::apply(iter1_(i,j), iter2_(i,j)); }
-
-    unsigned rows(unsigned recommendedRows) const
-    {
-        BZPRECONDITION(iter2_.rows(recommendedRows) == 
-            iter1_.rows(recommendedRows));
-        return iter1_.rows(recommendedRows);
-    }
-
-    unsigned cols(unsigned recommendedCols) const
-    {
-        BZPRECONDITION(iter2_.cols(recommendedCols) == 
-            iter1_.cols(recommendedCols));
-        return iter1_.cols(recommendedCols);
-    }
-
-private:
-    T_expr1 iter1_;
-    T_expr2 iter2_;
-};
-
-template<class P_expr, class P_unaryOp>
-class _bz_MatExprUnaryOp : public BlitzMatrixExpressionsBase {
-
-public:
-    typedef P_expr T_expr;
-    typedef P_unaryOp T_unaryOp;
-    typedef _bz_typename T_unaryOp::T_numtype T_numtype;
-
-#ifdef BZ_PASS_EXPR_BY_VALUE
-    _bz_MatExprUnaryOp(T_expr iter)
-        : iter_(iter)
-    { }
-#else
-    _bz_MatExprUnaryOp(const T_expr& iter)
-        : iter_(iter)
-    { }
-#endif
-
-    T_numtype operator()(unsigned i, unsigned j) const
-    { return T_unaryOp::apply(iter_(i,j)); }
-
-    unsigned rows(unsigned recommendedRows) const
-    { return iter_.rows(recommendedRows); }
-
-    unsigned cols(unsigned recommendedCols) const
-    { return iter_.cols(recommendedCols); }
-
-private:
-    T_expr iter_;    
-};
-
-template<class P_numtype>
-class _bz_MatExprConstant : public BlitzMatrixExpressionsBase {
-public:
-    typedef P_numtype T_numtype;
-
-    _bz_MatExprConstant(P_numtype value)
-        : value_(value)
-    { }
-
-    T_numtype operator()(unsigned i, unsigned j) const
-    { return value_; }
-
-    unsigned rows(unsigned recommendedRows) const
-    { return recommendedRows; }
-
-    unsigned cols(unsigned recommendedCols) const
-    { return recommendedCols; }
-
-private:
-    T_numtype value_;
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/matref.h>
-#include <blitz/matbops.h>
-#include <blitz/matuops.h>
-
-#endif // BZ_MATEXPR_H
diff --git a/weave/blitz-20001213/blitz/matgen.h b/weave/blitz-20001213/blitz/matgen.h
deleted file mode 100644
index 4f532dd..0000000
--- a/weave/blitz-20001213/blitz/matgen.h
+++ /dev/null
@@ -1,222 +0,0 @@
-/***************************************************************************
- * blitz/matgen.h       Declarations for RowMajor and ColumnMajor matrices
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_MATGEN_H
-#define BZ_MATGEN_H
-
-#ifndef BZ_MSTRUCT_H
- #error <blitz/matgen.h> must be included via <blitz/mstruct.h>
-#endif // BZ_MSTRUCT_H
-
-BZ_NAMESPACE(blitz)
-
-class GeneralMatrix : public AsymmetricMatrix {
-
-public:
-    GeneralMatrix()
-    { }
-
-    GeneralMatrix(unsigned rows, unsigned cols)
-        : AsymmetricMatrix(rows, cols)
-    {
-    }
-
-    unsigned firstInRow(unsigned i) const
-    { return 0; }
-
-    unsigned lastInRow(unsigned i) const
-    { return cols_ - 1; }
-
-    unsigned firstInCol(unsigned j) const
-    { return 0; }
-
-    unsigned lastInCol(unsigned j) const
-    { return rows_ - 1; }
-
-    unsigned numElements() const
-    { return rows_ * cols_; }
-};
-
-class GeneralIterator {
-public:
-    GeneralIterator(unsigned rows, unsigned cols)
-    {
-        rows_ = rows;
-        cols_ = cols;
-        i_ = 0;
-        j_ = 0;
-        offset_ = 0;
-        good_ = true;
-    }
-
-    unsigned offset() const
-    { return offset_; }
-
-    operator _bz_bool() const
-    { return good_; }
-   
-    unsigned row() const
-    { return i_; }
-
-    unsigned col() const
-    { return j_; }
- 
-protected:
-    unsigned rows_, cols_;
-    unsigned offset_;
-    unsigned i_, j_;
-    _bz_bool good_;
-};
-
-class RowMajorIterator : public GeneralIterator {
-public:
-    RowMajorIterator(unsigned rows, unsigned cols)
-        : GeneralIterator(rows, cols)
-    { }
-
-    void operator++()
-    {
-        ++offset_;
-        ++j_;
-        if (j_ == cols_)
-        {
-            j_ = 0;
-            ++i_;
-            if (i_ == rows_)
-                good_ = false;
-        }
-    }
-};
-
-class RowMajor : public GeneralMatrix {
-
-public:
-    typedef RowMajorIterator T_iterator;
-
-    RowMajor()
-    { }
-
-    RowMajor(unsigned rows, unsigned cols)
-        : GeneralMatrix(rows, cols)
-    { }
-
-    unsigned coordToOffset(unsigned i, unsigned j) const
-    {
-        return i*cols_+j;
-    }
-
-    template<class T_numtype>
-    T_numtype get(const T_numtype * _bz_restrict data,
-        unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        return data[coordToOffset(i,j)];
-    }
-
-    template<class T_numtype>
-    T_numtype& get(T_numtype * _bz_restrict data, unsigned i, unsigned j)
-    {
-        BZPRECONDITION(inRange(i,j));
-        return data[coordToOffset(i,j)];
-    }
-};
-
-class ColumnMajorIterator : public GeneralIterator {
-public:
-    ColumnMajorIterator(unsigned rows, unsigned cols)
-        : GeneralIterator(rows, cols)
-    {
-    }
-
-    void operator++()
-    {
-        ++offset_;
-        ++i_;
-        if (i_ == rows_)
-        {
-            i_ = 0;
-            ++j_;
-            if (j_ == cols_)
-                good_ = false;
-        }
-    }
-};
-
-class ColumnMajor : public GeneralMatrix {
-
-public:
-    ColumnMajor()
-    { }
-
-    ColumnMajor(unsigned rows, unsigned cols)
-        : GeneralMatrix(rows, cols)
-    { }
-
-    unsigned coordToOffset(unsigned i, unsigned j) const
-    {
-        return j*rows_ + i;
-    }
-
-    template<class T_numtype>
-    T_numtype get(const T_numtype * _bz_restrict data,
-        unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        return data[coordToOffset(i,j)];
-    }
-
-    template<class T_numtype>
-    T_numtype& get(T_numtype * _bz_restrict data, unsigned i, unsigned j)
-    {
-        BZPRECONDITION(inRange(i,j));
-        return data[coordToOffset(i,j)];
-    }
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATGEN_H
-
diff --git a/weave/blitz-20001213/blitz/mathf2.h b/weave/blitz-20001213/blitz/mathf2.h
deleted file mode 100644
index d80353c..0000000
--- a/weave/blitz-20001213/blitz/mathf2.h
+++ /dev/null
@@ -1,252 +0,0 @@
-#ifndef BZ_MATHF2_H
-#define BZ_MATHF2_H
-
-#ifndef BZ_APPLICS_H
- #error <blitz/mathf2.h> should be included via <blitz/applics.h>
-#endif
-
-#ifndef BZ_PRETTYPRINT_H
- #include <blitz/prettyprint.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// cexp(z)     Complex exponential
-template<class P_numtype1>
-class _bz_cexp : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return _bz_exp<T_numtype1>::apply(x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cexp(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// csqrt(z)    Complex square root
-template<class P_numtype1>
-class _bz_csqrt : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return _bz_sqrt<T_numtype1>::apply(x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "csqrt(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// pow2        Square
-template<class P_numtype1>
-class _bz_pow2 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { 
-        return BZ_NO_PROPAGATE(x) * BZ_NO_PROPAGATE(x);
-    }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "pow2(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// pow3        Cube
-template<class P_numtype1>
-class _bz_pow3 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { 
-        return BZ_NO_PROPAGATE(x) * BZ_NO_PROPAGATE(x) *
-          BZ_NO_PROPAGATE(x);
-    }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "pow3(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// pow4        Fourth power
-template<class P_numtype1>
-class _bz_pow4 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { 
-        T_numtype t1 = BZ_NO_PROPAGATE(x) * BZ_NO_PROPAGATE(x);
-        return BZ_NO_PROPAGATE(t1) * BZ_NO_PROPAGATE(t1);
-    }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "pow4(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// pow5        Fifth power
-template<class P_numtype1>
-class _bz_pow5 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    {
-        T_numtype t1 = BZ_NO_PROPAGATE(x) * BZ_NO_PROPAGATE(x);
-        return BZ_NO_PROPAGATE(t1) * BZ_NO_PROPAGATE(t1)
-            * BZ_NO_PROPAGATE(t1);
-    }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "pow5(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// pow6        Sixth power
-template<class P_numtype1>
-class _bz_pow6 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    {
-        T_numtype t1 = BZ_NO_PROPAGATE(x) * BZ_NO_PROPAGATE(x) 
-            * BZ_NO_PROPAGATE(x);
-        return BZ_NO_PROPAGATE(t1) * BZ_NO_PROPAGATE(t1);
-    }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "pow6(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-
-// pow7        Seventh power
-template<class P_numtype1>
-class _bz_pow7 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    {
-        T_numtype t1 = BZ_NO_PROPAGATE(x) * BZ_NO_PROPAGATE(x) 
-            * BZ_NO_PROPAGATE(x);
-        return BZ_NO_PROPAGATE(t1) * BZ_NO_PROPAGATE(t1)
-            * BZ_NO_PROPAGATE(x);
-    }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "pow7(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// pow8        Eighth power
-template<class P_numtype1>
-class _bz_pow8 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    {
-        T_numtype t1 = BZ_NO_PROPAGATE(x) * BZ_NO_PROPAGATE(x);
-        T_numtype t2 = BZ_NO_PROPAGATE(t1) * BZ_NO_PROPAGATE(t1);
-        return BZ_NO_PROPAGATE(t2) * BZ_NO_PROPAGATE(t2);
-    }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "pow8(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-/*
- * These scalar versions of pow2, pow3, ..., pow8 are provided for
- * convenience.
- *
- * NEEDS_WORK -- include BZ_NO_PROPAGATE for these scalar versions.
- */
-
-// NEEDS_WORK -- make these templates.  Rely on specialization to
-// handle expression template versions.
-
-#define BZ_DECLARE_POW(T)  \
- inline T pow2(T x) { return x*x; }                  \
- inline T pow3(T x) { return x*x*x; }                \
- inline T pow4(T x) { T t1 = x*x; return t1*t1; }    \
- inline T pow5(T x) { T t1 = x*x; return t1*t1*x; }  \
- inline T pow6(T x) { T t1 = x*x*x; return t1*t1; }  \
- inline T pow7(T x) { T t1 = x*x; return t1*t1*t1*x; } \
- inline T pow8(T x) { T t1 = x*x, t2=t1*t1; return t2*t2; }  
-
-BZ_DECLARE_POW(int)
-BZ_DECLARE_POW(float)
-BZ_DECLARE_POW(double)
-BZ_DECLARE_POW(long double)
-
-#ifdef BZ_HAVE_COMPLEX
-BZ_DECLARE_POW(complex<float>)
-BZ_DECLARE_POW(complex<double>)
-BZ_DECLARE_POW(complex<long double>)
-#endif
-
-BZ_NAMESPACE_END
-
-#endif
diff --git a/weave/blitz-20001213/blitz/mathfunc.h b/weave/blitz-20001213/blitz/mathfunc.h
deleted file mode 100644
index 07777f1..0000000
--- a/weave/blitz-20001213/blitz/mathfunc.h
+++ /dev/null
@@ -1,2784 +0,0 @@
-// Generated: genmathfunc.cpp Feb  3 1999 09:08:50
-
-#ifndef BZ_MATHFUNC_H
-#define BZ_MATHFUNC_H
-
-#ifndef BZ_APPLICS_H
- #error <blitz/mathfunc.h> should be included via <blitz/applics.h>
-#endif
-
-
-#ifndef BZ_PRETTYPRINT_H
- #include <blitz/prettyprint.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// abs(P_numtype1)    Absolute value
-template<class P_numtype1>
-class _bz_abs : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(abs)(x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "abs(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// abs(long)
-template<>
-class _bz_abs<long> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long T_numtype1;
-    typedef long T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(labs)((long)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "labs(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// abs(float)
-template<>
-class _bz_abs<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(fabs)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "fabs(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// abs(double)
-template<>
-class _bz_abs<double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef double T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(fabs)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "fabs(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// abs(long double)
-template<>
-class _bz_abs<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(fabs)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "fabs(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// abs(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_abs<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(abs)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "abs(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// abs(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_abs<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(abs)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "abs(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// abs(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_abs<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(abs)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "abs(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// acos(P_numtype1)    Inverse cosine
-template<class P_numtype1>
-class _bz_acos : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(acos)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "acos(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// acos(float)
-template<>
-class _bz_acos<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(acos)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "acos(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// acos(long double)
-template<>
-class _bz_acos<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(acos)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "acos(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// acosh(P_numtype1)    Inverse hyperbolic cosine
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_acosh : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(acosh)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "acosh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// asin(P_numtype1)    Inverse sine
-template<class P_numtype1>
-class _bz_asin : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(asin)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "asin(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// asin(float)
-template<>
-class _bz_asin<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(asin)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "asin(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// asin(long double)
-template<>
-class _bz_asin<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(asin)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "asin(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// asinh(P_numtype1)    Inverse hyperbolic sine
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_asinh : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(asinh)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "asinh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// arg(P_numtype1)
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<class P_numtype1>
-class _bz_arg : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return 0; }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "0(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// arg(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_arg<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(arg)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "arg(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// arg(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_arg<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(arg)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "arg(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// arg(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_arg<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(arg)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "arg(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// atan(P_numtype1)    Inverse tangent
-template<class P_numtype1>
-class _bz_atan : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(atan)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "atan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// atan(float)
-template<>
-class _bz_atan<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(atan)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "atan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// atan(long double)
-template<>
-class _bz_atan<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(atan)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "atan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// atanh(P_numtype1)    Inverse hyperbolic tangent
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_atanh : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(atanh)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "atanh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// atan2(P_numtype1, P_numtype2)    Inverse tangent
-template<class P_numtype1, class P_numtype2>
-class _bz_atan2 : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_MATHFN_SCOPE(atan2)((double)x,(double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "atan2(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// atan2(float, float)
-template<>
-class _bz_atan2<float, float > : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype2;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_MATHFN_SCOPE(atan2)((float)x,(float)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "atan2(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// atan2(long double, long double)
-template<>
-class _bz_atan2<long double, long double > : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype2;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_MATHFN_SCOPE(atan2)((long double)x,(long double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "atan2(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// _class(P_numtype1)    Classification of float-point value (FP_xxx)
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1>
-class _bz__class : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef int T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(_class)(x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "_class(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// cbrt(P_numtype1)    Cube root
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_cbrt : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(cbrt)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cbrt(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// ceil(P_numtype1)    Ceiling
-template<class P_numtype1>
-class _bz_ceil : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(ceil)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "ceil(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// ceil(float)
-template<>
-class _bz_ceil<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(ceil)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "ceil(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// ceil(long double)
-template<>
-class _bz_ceil<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(ceil)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "ceil(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// conj(P_numtype1)
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<class P_numtype1>
-class _bz_conj : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(conj)(x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "conj(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// cos(P_numtype1)    Cosine
-template<class P_numtype1>
-class _bz_cos : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(cos)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cos(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// cos(float)
-template<>
-class _bz_cos<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(cos)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cos(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// cos(long double)
-template<>
-class _bz_cos<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(cos)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cos(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// cos(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_cos<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(cos)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cos(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// cos(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_cos<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(cos)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cos(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// cos(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_cos<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(cos)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cos(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// copysign(P_numtype1, P_numtype2)
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1, class P_numtype2>
-class _bz_copysign : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_IEEEMATHFN_SCOPE(copysign)((double)x,(double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "copysign(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// cosh(P_numtype1)    Hyperbolic cosine
-template<class P_numtype1>
-class _bz_cosh : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(cosh)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cosh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// cosh(float)
-template<>
-class _bz_cosh<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(cosh)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cosh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// cosh(long double)
-template<>
-class _bz_cosh<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(cosh)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cosh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// cosh(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_cosh<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(cosh)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cosh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// cosh(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_cosh<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(cosh)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cosh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// cosh(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_cosh<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(cosh)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "cosh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// drem(P_numtype1, P_numtype2)    Remainder
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1, class P_numtype2>
-class _bz_drem : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_IEEEMATHFN_SCOPE(drem)((double)x,(double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "drem(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// exp(P_numtype1)    Exponential
-template<class P_numtype1>
-class _bz_exp : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(exp)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "exp(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// exp(float)
-template<>
-class _bz_exp<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(exp)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "exp(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// exp(long double)
-template<>
-class _bz_exp<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(exp)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "exp(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// exp(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_exp<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(exp)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "exp(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// exp(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_exp<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(exp)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "exp(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// exp(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_exp<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(exp)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "exp(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// expm1(P_numtype1)    Exp(x)-1
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_expm1 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(expm1)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "expm1(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// erf(P_numtype1)    Error function
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_erf : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(erf)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "erf(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// erfc(P_numtype1)    Complementary error function
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_erfc : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(erfc)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "erfc(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// floor(P_numtype1)    Floor function
-template<class P_numtype1>
-class _bz_floor : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(floor)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "floor(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// floor(float)
-template<>
-class _bz_floor<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(floor)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "floor(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// floor(long double)
-template<>
-class _bz_floor<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(floor)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "floor(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// fmod(P_numtype1, P_numtype2)    Modulo remainder
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1, class P_numtype2>
-class _bz_fmod : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_IEEEMATHFN_SCOPE(fmod)((double)x,(double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "fmod(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// hypot(P_numtype1, P_numtype2)    sqrt(x*x+y*y)
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1, class P_numtype2>
-class _bz_hypot : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_IEEEMATHFN_SCOPE(hypot)((double)x,(double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "hypot(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// ilogb(P_numtype1)    Integer unbiased exponent
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1>
-class _bz_ilogb : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef int T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(ilogb)(x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "ilogb(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// isnan(P_numtype1)    Nonzero if NaNS or NaNQ
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_isnan : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef int T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(isnan)(x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "isnan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// itrunc(P_numtype1)    Truncate and convert to integer
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1>
-class _bz_itrunc : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef int T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(itrunc)(x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "itrunc(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// j0(P_numtype1)    Bessel function first kind, order 0
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_j0 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(j0)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "j0(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// j1(P_numtype1)    Bessel function first kind, order 1
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_j1 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(j1)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "j1(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// lgamma(P_numtype1)    Log absolute gamma
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_lgamma : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(lgamma)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "lgamma(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// log(P_numtype1)    Natural logarithm
-template<class P_numtype1>
-class _bz_log : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(log)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// log(float)
-template<>
-class _bz_log<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(log)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// log(long double)
-template<>
-class _bz_log<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(log)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// log(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_log<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(log)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// log(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_log<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(log)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// log(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_log<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(log)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// logb(P_numtype1)    Unbiased exponent (IEEE)
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_logb : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(logb)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "logb(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// log1p(P_numtype1)    Compute log(1 + x)
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_log1p : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(log1p)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log1p(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// log10(P_numtype1)    Logarithm base 10
-template<class P_numtype1>
-class _bz_log10 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(log10)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log10(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// log10(float)
-template<>
-class _bz_log10<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(log10)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log10(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// log10(long double)
-template<>
-class _bz_log10<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(log10)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "log10(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// nearest(P_numtype1)    Nearest floating point integer
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1>
-class _bz_nearest : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(nearest)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "nearest(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// nextafter(P_numtype1, P_numtype2)    Next representable number after x towards y
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1, class P_numtype2>
-class _bz_nextafter : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_IEEEMATHFN_SCOPE(nextafter)((double)x,(double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "nextafter(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-template<class P_numtype>
-class _bz_negate : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef BZ_SIGNEDTYPE(P_numtype) T_numtype;
-
-    static inline T_numtype apply(T_numtype x)
-    { return -x; }
-};
-
-// norm(P_numtype1)
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<class P_numtype1>
-class _bz_norm : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype1 T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(norm)(x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "norm(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// polar(P_numtype1, P_numtype2)
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<class P_numtype1, class P_numtype2>
-class _bz_polar : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef complex<T_numtype1> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_CMATHFN_SCOPE(polar)(x,y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "polar(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// pow(P_numtype1, P_numtype2)    Power
-template<class P_numtype1, class P_numtype2>
-class _bz_pow : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_MATHFN_SCOPE(pow)((double)x,(double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "pow(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// pow(float, float)
-template<>
-class _bz_pow<float, float > : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype2;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_MATHFN_SCOPE(pow)((float)x,(float)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "pow(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// pow(long double, long double)
-template<>
-class _bz_pow<long double, long double > : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype2;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_MATHFN_SCOPE(pow)((long double)x,(long double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "pow(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// pow(complex<float>, complex<float>)
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_pow<complex<float>, complex<float> > : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float> T_numtype1;
-    typedef complex<float> T_numtype2;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_CMATHFN_SCOPE(pow)((complex<float>)x,(complex<float>)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "pow(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// pow(complex<double>, complex<double>)
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_pow<complex<double>, complex<double> > : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double> T_numtype1;
-    typedef complex<double> T_numtype2;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_CMATHFN_SCOPE(pow)((complex<double>)x,(complex<double>)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "pow(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// pow(complex<long double>, complex<long double>)
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_pow<complex<long double>, complex<long double> > : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double> T_numtype1;
-    typedef complex<long double> T_numtype2;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_CMATHFN_SCOPE(pow)((complex<long double>)x,(complex<long double>)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "pow(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// remainder(P_numtype1, P_numtype2)    Remainder
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1, class P_numtype2>
-class _bz_remainder : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_IEEEMATHFN_SCOPE(remainder)((double)x,(double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "remainder(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// rint(P_numtype1)    Round to floating point integer
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_rint : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(rint)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "rint(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// rsqrt(P_numtype1)    Reciprocal square root
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1>
-class _bz_rsqrt : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(rsqrt)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "rsqrt(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// scalb(P_numtype1, P_numtype2)    x * (2**y)
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1, class P_numtype2>
-class _bz_scalb : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_IEEEMATHFN_SCOPE(scalb)((double)x,(double)y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "scalb(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// sin(P_numtype1)    Sine
-template<class P_numtype1>
-class _bz_sin : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(sin)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sin(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// sin(float)
-template<>
-class _bz_sin<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(sin)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sin(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// sin(long double)
-template<>
-class _bz_sin<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(sin)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sin(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// sin(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_sin<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(sin)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sin(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// sin(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_sin<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(sin)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sin(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// sin(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_sin<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(sin)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sin(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// sinh(P_numtype1)    Hyperbolic sine
-template<class P_numtype1>
-class _bz_sinh : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(sinh)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sinh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// sinh(float)
-template<>
-class _bz_sinh<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(sinh)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sinh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// sinh(long double)
-template<>
-class _bz_sinh<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(sinh)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sinh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// sinh(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_sinh<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(sinh)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sinh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// sinh(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_sinh<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(sinh)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sinh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// sinh(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_sinh<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(sinh)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sinh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-template<class P_numtype>
-class _bz_sqr : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype T_numtype;
-
-    static inline T_numtype apply(T_numtype x)
-    { return x*x; }
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sqr(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-#ifdef BZ_HAVE_COMPLEX_MATH
-// Specialization of _bz_sqr for complex<T>
-template<class T>
-class _bz_sqr<complex<T> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<T> T_numtype;
-
-    static inline T_numtype apply(T_numtype x)
-    {
-        T r = x.real();  T i = x.imag();
-        return T_numtype(r*r-i*i, 2*r*i);
-    }
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sqr(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// sqrt(P_numtype1)    Square root
-template<class P_numtype1>
-class _bz_sqrt : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(sqrt)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sqrt(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// sqrt(float)
-template<>
-class _bz_sqrt<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(sqrt)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sqrt(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// sqrt(long double)
-template<>
-class _bz_sqrt<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(sqrt)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sqrt(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// sqrt(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_sqrt<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(sqrt)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sqrt(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// sqrt(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_sqrt<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(sqrt)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sqrt(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// sqrt(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_sqrt<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(sqrt)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "sqrt(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// tan(P_numtype1)    Tangent
-template<class P_numtype1>
-class _bz_tan : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(tan)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// tan(float)
-template<>
-class _bz_tan<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(tan)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// tan(long double)
-template<>
-class _bz_tan<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(tan)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// tan(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_tan<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(tan)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// tan(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_tan<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(tan)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// tan(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_tan<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(tan)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tan(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// tanh(P_numtype1)    Hyperbolic tangent
-template<class P_numtype1>
-class _bz_tanh : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(tanh)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tanh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// tanh(float)
-template<>
-class _bz_tanh<float> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef float T_numtype1;
-    typedef float T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(tanh)((float)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tanh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// tanh(long double)
-template<>
-class _bz_tanh<long double> : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef long double T_numtype1;
-    typedef long double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_MATHFN_SCOPE(tanh)((long double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tanh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-
-// tanh(complex<float> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_tanh<complex<float> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<float>  T_numtype1;
-    typedef complex<float> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(tanh)((complex<float> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tanh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// tanh(complex<double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_tanh<complex<double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<double>  T_numtype1;
-    typedef complex<double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(tanh)((complex<double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tanh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// tanh(complex<long double> )
-#ifdef BZ_HAVE_COMPLEX_MATH
-template<>
-class _bz_tanh<complex<long double> > : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef complex<long double>  T_numtype1;
-    typedef complex<long double> T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_CMATHFN_SCOPE(tanh)((complex<long double> )x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "tanh(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// uitrunc(P_numtype1)    Truncate and convert to unsigned
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1>
-class _bz_uitrunc : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef unsigned T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(uitrunc)((unsigned)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "uitrunc(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// unordered(P_numtype1, P_numtype2)    True if a comparison of x and y would be unordered
-#ifdef BZ_HAVE_SYSTEM_V_MATH
-template<class P_numtype1, class P_numtype2>
-class _bz_unordered : public TwoOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef P_numtype2 T_numtype2;
-    typedef int T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x, T_numtype2 y)
-    { return BZ_IEEEMATHFN_SCOPE(unordered)(x,y); }
-
-    template<class T1, class T2>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a, const T2& b)
-    {
-        str += "unordered(";
-        a.prettyPrint(str,format);
-        str += ",";
-        b.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// y0(P_numtype1)    Bessel function of the second kind, order zero
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_y0 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(y0)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "y0(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-// y1(P_numtype1)    Bessel function of the second kind, order one
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-class _bz_y1 : public OneOperandApplicativeTemplatesBase {
-public:
-    typedef P_numtype1 T_numtype1;
-    typedef double T_numtype;
-
-    static inline T_numtype apply(T_numtype1 x)
-    { return BZ_IEEEMATHFN_SCOPE(y1)((double)x); }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "y1(";
-        a.prettyPrint(str,format);
-        str += ")";
-    }
-};
-#endif
-
-
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATHFUNC_H
diff --git a/weave/blitz-20001213/blitz/matltri.h b/weave/blitz-20001213/blitz/matltri.h
deleted file mode 100644
index e21c6d3..0000000
--- a/weave/blitz-20001213/blitz/matltri.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/***************************************************************************
- * blitz/matltri.h      Declarations for LowerTriangular matrices
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-
-#ifndef BZ_MATLTRI_H
-#define BZ_MATLTRI_H
-
-#ifndef BZ_MSTRUCT_H
- #error <blitz/matltri.h> must be included via <blitz/mstruct.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Lower triangular, row major ordering
-// [ 0 . . . ]
-// [ 1 2 . . ]
-// [ 3 4 5 . ]
-// [ 6 7 8 9 ]
-
-class LowerTriangularIterator {
-public:
-    LowerTriangularIterator(unsigned rows, unsigned cols)
-    {
-        BZPRECONDITION(rows == cols);
-        size_ = rows;
-        good_ = true;
-        offset_ = 0;
-        i_ = 0;
-        j_ = 0;
-    }
-   
-    operator _bz_bool() const
-    { return good_; }
-
-    void operator++()
-    {
-        BZPRECONDITION(good_);
-        ++offset_;
-        ++j_;
-        if (j_ > i_)
-        {
-            j_ = 0;
-            ++i_;
-            if (i_ == size_)
-                good_ = false;
-        }
-    }
-
-    unsigned row() const
-    { return i_; }
-
-    unsigned col() const
-    { return j_; }
-
-    unsigned offset() const
-    { return offset_; }
-
-protected:
-    unsigned size_;
-    _bz_bool good_;
-    unsigned offset_;
-    unsigned i_, j_;
-};
-
-class LowerTriangular : public MatrixStructure {
-
-public:
-    typedef LowerTriangularIterator T_iterator;
-
-    LowerTriangular()
-        : size_(0)
-    { }
-
-    LowerTriangular(unsigned size)
-        : size_(size)
-    { }
-
-    LowerTriangular(unsigned rows, unsigned cols)
-        : size_(rows)
-    {
-        BZPRECONDITION(rows == cols);
-    }
-
-    unsigned columns() const
-    { return size_; }
-
-    unsigned coordToOffset(unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        BZPRECONDITION(i >= j);
-        return i*(i+1)/2 + j;
-    }
-
-    unsigned firstInRow(unsigned i) const
-    { return 0; }
-
-    template<class T_numtype>
-    T_numtype get(const T_numtype * _bz_restrict data,
-        unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        if (i >= j)
-            return data[coordToOffset(i,j)];
-        else
-            return ZeroElement<T_numtype>::zero();
-    }
-
-    template<class T_numtype>
-    T_numtype& get(T_numtype * _bz_restrict data, unsigned i, unsigned j)
-    {
-        BZPRECONDITION(inRange(i,j));
-        if (i >= j)
-            return data[coordToOffset(i,j)];
-        else
-            return ZeroElement<T_numtype>::zero();
-    }
-
-    unsigned lastInRow(unsigned i) const
-    { return i; }
-
-    unsigned firstInCol(unsigned j) const
-    { return j; }
-
-    unsigned lastInCol(unsigned j) const
-    { return size_ - 1; }
-
-    _bz_bool inRange(unsigned i, unsigned j) const
-    {
-        return (i < size_) && (j < size_);
-    }
-
-    unsigned numElements() const
-    { return size_ * (size_ + 1) / 2; }
-
-    unsigned rows() const
-    { return size_; }
-
-    void resize(unsigned size)
-    {
-        size_ = size;
-    }
-
-    void resize(unsigned rows, unsigned cols)
-    {
-        BZPRECONDITION(rows == cols);
-        size_  = rows;
-    }
-
-private:
-    unsigned size_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATLTRI_H
-
diff --git a/weave/blitz-20001213/blitz/matref.h b/weave/blitz-20001213/blitz/matref.h
deleted file mode 100644
index ab91fc4..0000000
--- a/weave/blitz-20001213/blitz/matref.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/***************************************************************************
- * blitz/matref.h      Declaration of the _bz_MatrixRef<P_numtype, P_structure>
- *                     class.
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_MATREF_H
-#define BZ_MATREF_H
-
-#ifndef BZ_MATEXPR_H
- #error <blitz/matref.h> must be included via <blitz/matexpr.h>
-#endif // BZ_MATEXPR_H
-
-BZ_NAMESPACE(blitz)
-
-template<class P_numtype, class P_structure>
-class _bz_MatrixRef {
-
-public:
-    typedef P_numtype T_numtype;
-
-    _bz_MatrixRef(const Matrix<P_numtype, P_structure>& m)
-        : matrix_(&m)
-    { }
-
-    T_numtype operator()(unsigned i, unsigned j) const
-    { return (*matrix_)(i,j); }
-
-    unsigned rows(unsigned) const
-    { return matrix_->rows(); }
-
-    unsigned cols(unsigned) const
-    { return matrix_->cols(); }
-
-private:
-    _bz_MatrixRef() { } 
-
-    const Matrix<P_numtype, P_structure>* matrix_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATREF_H
diff --git a/weave/blitz-20001213/blitz/matrix.cc b/weave/blitz-20001213/blitz/matrix.cc
deleted file mode 100644
index 791735a..0000000
--- a/weave/blitz-20001213/blitz/matrix.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_MATRIX_CC
-#define BZ_MATRIX_CC
-
-#ifndef BZ_MATRIX_H
- #include <blitz/matrix.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Matrix expression operand
-template<class P_numtype, class P_structure> template<class P_expr>
-Matrix<P_numtype, P_structure>& 
-Matrix<P_numtype, P_structure>::operator=(_bz_MatExpr<P_expr> expr)
-{
-    // Check for compatible structures.
-
-    // Fast evaluation (compatible structures)
-    // (not implemented)
-
-    // Slow evaluation
-    _bz_typename P_structure::T_iterator iter(rows(), cols());
-    while (iter)
-    {
-        data_[iter.offset()] = expr(iter.row(), iter.col());
-        ++iter;
-    }
-
-    return *this;
-}
-
-template<class P_numtype, class P_structure>
-ostream& operator<<(ostream& os, const Matrix<P_numtype, P_structure>& matrix)
-{
-    os << "[ ";
-    for (int i=0; i < matrix.rows(); ++i)
-    {
-        for (int j=0; j < matrix.columns(); ++j)
-        {
-            os << setw(10) << matrix(i,j);
-            if ((!((j+1)%7)) && (j < matrix.cols()-1))
-                os << endl << "         ...";
-        }
-        if (i != matrix.rows() - 1)
-            os << endl  << "  ";
-    }
-    os << " ]";
-    return os;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATRIX_CC
diff --git a/weave/blitz-20001213/blitz/matrix.h b/weave/blitz-20001213/blitz/matrix.h
deleted file mode 100644
index ff6a354..0000000
--- a/weave/blitz-20001213/blitz/matrix.h
+++ /dev/null
@@ -1,243 +0,0 @@
-/***************************************************************************
- * blitz/matrix.h      Declaration of the Matrix<T_type, T_structure> class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.6  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.5  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.4  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1996/11/11 17:29:13  tveldhui
- * Initial revision
- *
- * Revision 1.2  1996/10/31 21:06:54  tveldhui
- * Did away with multiple template parameters.  Only numeric type
- * and structure parameters now.
- *
- *
- */
-
-#ifndef BZ_MATRIX_H
-#define BZ_MATRIX_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_MEMBLOCK_H
- #include <blitz/memblock.h>
-#endif
-
-#ifndef BZ_MSTRUCT_H
- #include <blitz/mstruct.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Forward declarations
-template<class P_numtype, class P_structure>
-class _bz_MatrixRef;
-
-template<class P_expr>
-class _bz_MatExpr;
-
-// Declaration of class Matrix
-template<class P_numtype, class P_structure BZ_TEMPLATE_DEFAULT(RowMajor)>
-class Matrix : protected MemoryBlockReference<P_numtype> {
-
-public:
-
-    //////////////////////////////////////////////
-    // Public Types
-    //////////////////////////////////////////////
-
-    typedef P_numtype        T_numtype;
-    typedef P_structure      T_structure;
-    typedef Matrix<P_numtype, P_structure>   T_matrix;
-
-    //////////////////////////////////////////////
-    // Constructors                             //
-    //////////////////////////////////////////////
-
-    Matrix()
-    { }
-
-    Matrix(int rows, int cols, T_structure structure = T_structure())
-        : structure_(structure) 
-    {
-        structure_.resize(rows, cols);
-        MemoryBlockReference<T_numtype>::newBlock(structure_.numElements());
-    }
-
-    // Matrix(int rows, int cols, T_numtype initValue,
-    //    T_structure structure = T_structure(rows, cols));
-    // Matrix(int rows, int cols, Random);
-    // Matrix(int rows, int cols, matrix-expression);
-    // Matrix(int rows, int cols, T_numtype* data, int rowStride, int colStride);
-    // _bz_explicit Matrix(Vector<T_numtype>& matrix);
-    // _bz_explicit Matrix(unsigned length);
-
-    // Create a vector view of an already allocated block of memory.
-    // Note that the memory will not be freed when this vector is
-    // destroyed.
-    // Matrix(unsigned length, T_numtype* data, int stride = 1);
-
-    //////////////////////////////////////////////
-    // Member functions
-    //////////////////////////////////////////////
-
-    //T_iterator      begin()  const;
-    //T_constIterator begin()  const;
-    //T_vector        copy()   const;
-    //T_iterator      end()    const;
-    //T_constIterator end()    const;
-
-    unsigned        cols()        const
-    { return structure_.columns(); }
-
-    unsigned        columns()     const
-    { return structure_.columns(); }
-
-    void            makeUnique()  const;
-
-    unsigned        numElements() const
-    { return structure_.numElements(); }
-
-    void            reference(T_matrix&);
-
-    void            resize(unsigned rows, unsigned cols)
-    {
-        structure_.resize(rows, cols);
-        MemoryBlockReference<T_numtype>::newBlock(structure_.numElements());
-    }
-
-//    void            resizeAndPreserve(unsigned newLength);
-
-    unsigned        rows()   const
-    { return structure_.rows(); }
-
-    _bz_MatrixRef<T_numtype, T_structure> _bz_getRef() const
-    { return _bz_MatrixRef<T_numtype, T_structure>(*this); }
-
-    //////////////////////////////////////////////
-    // Subscripting operators
-    //////////////////////////////////////////////
-
-    T_numtype           operator()(unsigned i, unsigned j) const
-    {
-        return structure_.get(data_, i, j);
-    }
-
-    T_numtype& _bz_restrict operator()(unsigned i, unsigned j)
-    {
-        return structure_.get(data_, i, j);
-    }
-
-    // T_matrix      operator()(Range,Range);
-
-    // T_matrixIndirect operator()(Vector<int>,Vector<int>);
-    // T_matrixIndirect operator()(integer-placeholder-expression, Range);
-    // T_matrix         operator()(difference-equation-expression)
-
-    //////////////////////////////////////////////
-    // Assignment operators
-    //////////////////////////////////////////////
-
-    // Scalar operand
-    T_matrix& operator=(T_numtype);
-    T_matrix& operator+=(T_numtype);
-    T_matrix& operator-=(T_numtype);
-    T_matrix& operator*=(T_numtype);
-    T_matrix& operator/=(T_numtype);
-
-    // Matrix operand
-
-    template<class P_numtype2, class P_structure2> 
-    T_matrix& operator=(const Matrix<P_numtype2, P_structure2> &);
-    template<class P_numtype2, class P_structure2> 
-    T_matrix& operator+=(const Matrix<P_numtype2, P_structure2>&);
-    template<class P_numtype2, class P_structure2> 
-    T_matrix& operator-=(const Matrix<P_numtype2, P_structure2> &);
-    template<class P_numtype2, class P_structure2> 
-    T_matrix& operator*=(const Matrix<P_numtype2, P_structure2> &);
-    template<class P_numtype2, class P_structure2> 
-    T_matrix& operator/=(const Matrix<P_numtype2, P_structure2> &);
-
-    // Matrix expression operand
-    template<class P_expr>
-    T_matrix& operator=(_bz_MatExpr<P_expr>);
-
-    // Integer placeholder expression operand
-    // MatrixPick operand
-
-    //////////////////////////////////////////////
-    // Unary operators
-    //////////////////////////////////////////////
-
-    T_matrix& operator++();
-    void operator++(int);
-    T_matrix& operator--();
-    void operator--(int);
-    
-private:
-    T_structure structure_;
-};
-
-template<class P_numtype, class P_structure>
-ostream& operator<<(ostream& os, const Matrix<P_numtype, P_structure>& matrix);
-
-// Global operators
-// +,-,*,/ with all possible combinations of:
-//    - scalar
-//    - matrix
-//    - matrix pick
-//    - matrix expression
-// Pointwise Math functions: sin, cos, etc.
-// Global functions
-
-BZ_NAMESPACE_END
-
-#include <blitz/matrix.cc>
-#include <blitz/matexpr.h>
-
-#endif // BZ_MATRIX_H
diff --git a/weave/blitz-20001213/blitz/matsymm.h b/weave/blitz-20001213/blitz/matsymm.h
deleted file mode 100644
index d3f1296..0000000
--- a/weave/blitz-20001213/blitz/matsymm.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/***************************************************************************
- * blitz/matsymm.h      Declarations for Symmetric matrices
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_MATSYMM_H
-#define BZ_MATSYMM_H
-
-#ifndef BZ_MSTRUCT_H
- #error <blitz/matsymm.h> must be included via <blitz/mstruct.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Symmetric, lower triangular row major ordering
-// [ 0 1 3 6 ]
-// [ 1 2 4 7 ]
-// [ 3 4 5 8 ]
-// [ 6 7 8 9 ]
-
-class SymmetricIterator {
-public:
-    SymmetricIterator(unsigned rows, unsigned cols)
-    {
-        BZPRECONDITION(rows == cols);
-        size_ = rows;
-        good_ = true;
-        offset_ = 0;
-        i_ = 0;
-        j_ = 0;
-    }
-   
-    operator _bz_bool() const
-    { return good_; }
-
-    void operator++()
-    {
-        BZPRECONDITION(good_);
-        ++offset_;
-        ++j_;
-        if (j_ > i_)
-        {
-            j_ = 0;
-            ++i_;
-            if (i_ == size_)
-                good_ = false;
-        }
-    }
-
-    unsigned row() const
-    { return i_; }
-
-    unsigned col() const
-    { return j_; }
-
-    unsigned offset() const
-    { return offset_; }
-
-protected:
-    unsigned size_;
-    _bz_bool good_;
-    unsigned offset_;
-    unsigned i_, j_;
-};
-
-class Symmetric : public MatrixStructure {
-
-public:
-    typedef SymmetricIterator T_iterator;
-
-    Symmetric()
-        : size_(0)
-    { }
-
-    Symmetric(unsigned size)
-        : size_(size)
-    { }
-
-    Symmetric(unsigned rows, unsigned cols)
-        : size_(rows)
-    {
-        BZPRECONDITION(rows == cols);
-    }
-
-    unsigned columns() const
-    { return size_; }
-
-    unsigned coordToOffset(unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        if (i >= j)
-            return i*(i+1)/2 + j;
-        else
-            return j*(j+1)/2 + i;
-    }
-
-    unsigned firstInRow(unsigned i) const
-    { return 0; }
-
-    template<class T_numtype>
-    T_numtype get(const T_numtype * _bz_restrict data,
-        unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        return data[coordToOffset(i,j)];
-    }
-
-    template<class T_numtype>
-    T_numtype& get(T_numtype * _bz_restrict data, unsigned i, unsigned j)
-    {
-        BZPRECONDITION(inRange(i,j));
-        return data[coordToOffset(i,j)];
-    }
-
-    unsigned lastInRow(unsigned i) const
-    { return i; }
-
-    unsigned firstInCol(unsigned j) const
-    { return j; }
-
-    unsigned lastInCol(unsigned j) const
-    { return size_ - 1; }
-
-    _bz_bool inRange(unsigned i, unsigned j) const
-    {
-        return (i < size_) && (j < size_);
-    }
-
-    unsigned numElements() const
-    { return size_ * (size_ + 1) / 2; }
-
-    unsigned rows() const
-    { return size_; }
-
-    void resize(unsigned size)
-    {
-        size_ = size;
-    }
-
-    void resize(unsigned rows, unsigned cols)
-    {
-        BZPRECONDITION(rows == cols);
-        size_  = rows;
-    }
-
-private:
-    unsigned size_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATSYMM_H
-
diff --git a/weave/blitz-20001213/blitz/mattoep.h b/weave/blitz-20001213/blitz/mattoep.h
deleted file mode 100644
index 1c036f9..0000000
--- a/weave/blitz-20001213/blitz/mattoep.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/***************************************************************************
- * blitz/mattoep.h      Declarations for Toeplitz matrices
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_MATTOEP_H
-#define BZ_MATTOEP_H
-
-#ifndef BZ_MSTRUCT_H
- #error <blitz/mattoep.h> must be included via <blitz/mstruct.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Toeplitz matrix
-// [ 0 1 2 3 ]
-// [ 1 2 3 4 ]
-// [ 2 3 4 5 ]
-// [ 3 4 5 6 ]
-
-class ToeplitzIterator {
-public:
-    ToeplitzIterator(unsigned rows, unsigned cols)
-    {
-        rows_ = rows;
-        cols_ = cols;
-        i_ = 0;
-        j_ = 0;
-        good_ = true;
-        offset_ = 0;
-    }
-
-    operator _bz_bool() const
-    {
-        return good_;
-    }
-
-    void operator++()
-    {
-        ++offset_;
-        if (i_ < rows_ - 1)
-            ++i_;
-        else if (j_ < cols_ - 1)
-            ++j_;
-        else
-            good_ = false;
-    }
-
-    unsigned row() const
-    { return i_; }
-
-    unsigned col() const
-    { return j_; }
-
-    unsigned offset() const
-    { return offset_; }
-
-protected:
-    unsigned offset_;
-    unsigned i_, j_;
-    unsigned rows_, cols_;
-    _bz_bool good_;
-};
-
-class Toeplitz : public GeneralMatrix {
-
-public:
-    typedef ToeplitzIterator T_iterator;
-
-    Toeplitz()
-        : rows_(0), cols_(0)
-    { }
-
-    Toeplitz(unsigned rows, unsigned cols)
-        : rows_(rows), cols_(cols)
-    { }
-
-    unsigned columns() const
-    { return cols_; }
-
-    unsigned coordToOffset(unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        return i + j;
-    }
-
-    unsigned firstInRow(unsigned i) const
-    { return 0; }
-
-    template<class T_numtype>
-    T_numtype get(const T_numtype * _bz_restrict data,
-        unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        return data[coordToOffset(i,j)];
-    }
-
-    template<class T_numtype>
-    T_numtype& get(T_numtype * _bz_restrict data, unsigned i, unsigned j)
-    {
-        BZPRECONDITION(inRange(i,j));
-        return data[coordToOffset(i,j)];
-    }
-
-    unsigned lastInRow(unsigned i) const
-    { return cols_ - 1; }
-
-    unsigned firstInCol(unsigned j) const
-    { return 0; }
-
-    unsigned lastInCol(unsigned j) const
-    { return rows_ - 1; }
-
-    _bz_bool inRange(unsigned i, unsigned j) const
-    {
-        return (i < rows_) && (j < cols_);
-    }
-
-    unsigned numElements() const
-    { return rows_ + cols_ - 1; }
-
-    unsigned rows() const
-    { return rows_; }
-
-    void resize(unsigned rows, unsigned cols)
-    {
-        rows_ = rows;
-        cols_ = cols;
-    }
-
-private:
-    unsigned rows_, cols_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATSYMM_H
-
diff --git a/weave/blitz-20001213/blitz/matuops.h b/weave/blitz-20001213/blitz/matuops.h
deleted file mode 100644
index 8b13789..0000000
--- a/weave/blitz-20001213/blitz/matuops.h
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/weave/blitz-20001213/blitz/matutri.h b/weave/blitz-20001213/blitz/matutri.h
deleted file mode 100644
index 1c8dd6c..0000000
--- a/weave/blitz-20001213/blitz/matutri.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/***************************************************************************
- * blitz/matutri.h      Declarations for UpperTriangular matrices
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- */
-
-#ifndef BZ_MATUTRI_H
-#define BZ_MATUTRI_H
-
-#ifndef BZ_MSTRUCT_H
- #error <blitz/matutri.h> must be included via <blitz/mstruct.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Upper triangular, column major ordering
-// [ 0 1 3 6 ]
-// [ . 2 4 7 ]
-// [ . . 5 8 ]
-// [ . . . 9 ]
-
-class UpperTriangularIterator {
-public:
-    UpperTriangularIterator(unsigned rows, unsigned cols)
-    {
-        BZPRECONDITION(rows == cols);
-        size_ = rows;
-        good_ = true;
-        offset_ = 0;
-        i_ = 0;
-        j_ = 0;
-    }
-   
-    operator _bz_bool() const
-    { return good_; }
-
-    void operator++()
-    {
-        BZPRECONDITION(good_);
-        ++offset_;
-        ++i_;
-        if (i_ > j_)
-        {
-            i_ = 0;
-            ++j_;
-            if (j_ == size_)
-                good_ = false;
-        }
-    }
-
-    unsigned row() const
-    { return i_; }
-
-    unsigned col() const
-    { return j_; }
-
-    unsigned offset() const
-    { return offset_; }
-
-protected:
-    unsigned size_;
-    _bz_bool good_;
-    unsigned offset_;
-    unsigned i_, j_;
-};
-
-class UpperTriangular : public MatrixStructure {
-
-public:
-    typedef UpperTriangularIterator T_iterator;
-
-    UpperTriangular()
-        : size_(0)
-    { }
-
-    UpperTriangular(unsigned size)
-        : size_(size)
-    { }
-
-    UpperTriangular(unsigned rows, unsigned cols)
-        : size_(rows)
-    {
-        BZPRECONDITION(rows == cols);
-    }
-
-    unsigned columns() const
-    { return size_; }
-
-    unsigned coordToOffset(unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        BZPRECONDITION(j >= i);
-        return j*(j+1)/2 + i;
-    }
-
-    unsigned firstInRow(unsigned i) const
-    { return 0; }
-
-    template<class T_numtype>
-    T_numtype get(const T_numtype * _bz_restrict data,
-        unsigned i, unsigned j) const
-    {
-        BZPRECONDITION(inRange(i,j));
-        if (j >= i)
-            return data[coordToOffset(i,j)];
-        else
-            return ZeroElement<T_numtype>::zero();
-    }
-
-    template<class T_numtype>
-    T_numtype& get(T_numtype * _bz_restrict data, unsigned i, unsigned j)
-    {
-        BZPRECONDITION(inRange(i,j));
-        if (j >= i)
-            return data[coordToOffset(i,j)];
-        else
-            return ZeroElement<T_numtype>::zero();
-    }
-
-    unsigned lastInRow(unsigned i) const
-    { return size_ - 1; }
-
-    unsigned firstInCol(unsigned j) const
-    { return 0; }
-
-    unsigned lastInCol(unsigned j) const
-    { return j; }
-
-    _bz_bool inRange(unsigned i, unsigned j) const
-    {
-        return (i < size_) && (j < size_);
-    }
-
-    unsigned numElements() const
-    { return size_ * (size_ + 1) / 2; }
-
-    unsigned rows() const
-    { return size_; }
-
-    void resize(unsigned size)
-    {
-        size_ = size;
-    }
-
-    void resize(unsigned rows, unsigned cols)
-    {
-        BZPRECONDITION(rows == cols);
-        size_  = rows;
-    }
-
-private:
-    unsigned size_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MATUTRI_H
-
diff --git a/weave/blitz-20001213/blitz/memblock.cc b/weave/blitz-20001213/blitz/memblock.cc
deleted file mode 100644
index 6f8eaa3..0000000
--- a/weave/blitz-20001213/blitz/memblock.cc
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_MEMBLOCK_CC
-#define BZ_MEMBLOCK_CC
-
-#ifndef BZ_MEMBLOCK_H
- #include <blitz/memblock.h>
-#endif
-
-#ifndef BZ_NUMTRAIT_H
- #include <blitz/numtrait.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Null memory block for each (template) instantiation of MemoryBlockReference
-template<class P_type> 
-NullMemoryBlock<P_type> MemoryBlockReference<P_type>::nullBlock_;
-
-template<class P_type>
-void MemoryBlock<P_type>::deallocate()
-{
-#ifndef BZ_ALIGN_BLOCKS_ON_CACHELINE_BOUNDARY
-    delete [] dataBlockAddress_;
-#else
-    if (!NumericTypeTraits<T_type>::hasTrivialCtor) {
-        for (int i=0; i < length_; ++i)
-            data_[i].~T_type();
-        delete [] reinterpret_cast<char*>(dataBlockAddress_);
-    }
-    else {
-        delete [] dataBlockAddress_;
-    }
-#endif
-}
-
-template<class P_type>
-inline void MemoryBlock<P_type>::allocate(int length)
-{
-    TAU_TYPE_STRING(p1, "MemoryBlock<T>::allocate() [T="
-        + CT(P_type) + "]");
-    TAU_PROFILE(p1, "void ()", TAU_BLITZ);
-
-#ifndef BZ_ALIGN_BLOCKS_ON_CACHELINE_BOUNDARY
-    data_ =  new T_type[length];
-    dataBlockAddress_ = data_;
-#else
-    int numBytes = length * sizeof(T_type);
-
-    if (numBytes < 1024)
-    {
-        data_ =  new T_type[length];
-        dataBlockAddress_ = data_;
-    }
-    else
-    {
-        // We're allocating a large array.  For performance reasons,
-        // it's advantageous to force the array to start on a
-        // cache line boundary.  We do this by allocating a little
-        // more memory than necessary, then shifting the pointer
-        // to the next cache line boundary.
-
-        // Patches by Petter Urkedal to support types with nontrivial
-        // constructors.
-
-        const int cacheBlockSize = 128;    // Will work for 32, 16 also
-
-        dataBlockAddress_ = reinterpret_cast<T_type*>
-            (new char[numBytes + cacheBlockSize - 1]);
-
-        // Shift to the next cache line boundary
-
-        ptrdiff_t offset = ptrdiff_t(dataBlockAddress_) % cacheBlockSize;
-        int shift = (offset == 0) ? 0 : (cacheBlockSize - offset);
-        data_ = (T_type*)(((char *)dataBlockAddress_) + shift);
-
-        // Use placement new to construct types with nontrival ctors
-        if (!NumericTypeTraits<T_type>::hasTrivialCtor) {
-            for (int i=0; i < length; ++i)
-                new(&data_[i]) T_type;
-        }
-    }
-#endif
-}
-
-
-BZ_NAMESPACE_END
-
-#endif // BZ_MEMBLOCK_CC
diff --git a/weave/blitz-20001213/blitz/memblock.h b/weave/blitz-20001213/blitz/memblock.h
deleted file mode 100644
index d58860d..0000000
--- a/weave/blitz-20001213/blitz/memblock.h
+++ /dev/null
@@ -1,381 +0,0 @@
-/***************************************************************************
- * blitz/memblock.h      MemoryBlock<T> and MemoryBlockReference<T>
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.8  1998/12/06 00:00:35  tveldhui
- * Prior to adding UnownedMemoryBlock
- *
- * Revision 1.7  1998/06/15 16:07:01  tveldhui
- * When a memory block is created from an existing block of data,
- * add an additional reference count so that makeUnique() will
- * create a copy of the data.
- *
- * Revision 1.6  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.5  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.4  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1996/11/11 17:29:13  tveldhui
- * Initial revision
- *
- *
- ***************************************************************************
- *
- */
-
-#ifndef __BZ_MEMBLOCK_H__
-#define __BZ_MEMBLOCK_H__
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_NUMTRAIT_H
- #include <blitz/numtrait.h>
-#endif
-
-#include <stddef.h>     // ptrdiff_t
-
-BZ_NAMESPACE(blitz)
-
-enum preexistingMemoryPolicy { 
-  duplicateData, 
-  deleteDataWhenDone, 
-  neverDeleteData 
-};
-
-// Forward declaration of MemoryBlockReference
-template<class T_type> class MemoryBlockReference;
-
-// Class MemoryBlock provides a reference-counted block of memory.  This block
-// may be referred to by multiple vector, matrix and array objects.  The memory
-// is automatically deallocated when the last referring object is destructed.
-// MemoryBlock may be subclassed to provide special allocators.
-template<class P_type>
-class MemoryBlock {
-
-    friend class MemoryBlockReference<P_type>;
-
-public:
-    typedef P_type T_type;
-
-protected:
-    MemoryBlock()
-    {
-        length_ = 0;
-        data_ = 0;
-        dataBlockAddress_ = 0;
-        references_ = 0;
-    }
-
-    _bz_explicit MemoryBlock(size_t items)
-    {
-        length_ = items;
-        allocate(length_);
-
-#ifdef BZ_DEBUG_LOG_ALLOCATIONS
-    cout << "MemoryBlock: allocated " << setw(8) << length_ 
-         << " at " << ((void *)dataBlockAddress_) << endl;
-#endif
-
-        BZASSERT(dataBlockAddress_ != 0);
-
-        references_ = 0;
-    }
-
-    MemoryBlock(size_t length, T_type* _bz_restrict data)
-    {
-        length_ = length;
-        data_ = data;
-        dataBlockAddress_ = 0;
-        references_ = 0;
-    }
-
-    virtual ~MemoryBlock()
-    {
-        if (dataBlockAddress_) 
-        {
-
-#ifdef BZ_DEBUG_LOG_ALLOCATIONS
-    cout << "MemoryBlock:     freed " << setw(8) << length_
-         << " at " << ((void *)dataBlockAddress_) << endl;
-#endif
-
-            deallocate();
-        }
-    }
-
-    void          addReference()
-    { 
-        ++references_; 
-
-#ifdef BZ_DEBUG_LOG_REFERENCES
-    cout << "MemoryBlock:    reffed " << setw(8) << length_ 
-         << " at " << ((void *)dataBlockAddress_) << " (r=" 
-         << (int)references_ << ")" << endl;
-#endif
-
-    }
-
-    T_type* _bz_restrict      data() 
-    { 
-        return data_; 
-    }
-
-    const T_type* _bz_restrict data()      const
-    { 
-        return data_; 
-    }
-
-    size_t        length()    const
-    { 
-        return length_; 
-    }
-
-    void              removeReference()
-    {
-        --references_;
-
-#ifdef BZ_DEBUG_LOG_REFERENCES
-    cout << "MemoryBlock: dereffed  " << setw(8) << length_
-         << " at " << ((void *)dataBlockAddress_) << " (r=" << (int)references_ 
-         << ")" << endl;
-#endif
-    }
-
-    int references() const
-    {
-        return references_;
-    }
-
-protected:
-    inline void allocate(int length);
-    void deallocate();
-
-private:   // Disabled member functions
-    MemoryBlock(const MemoryBlock<T_type>&)
-    { }
-
-    void operator=(const MemoryBlock<T_type>&)
-    { }
-
-private:   // Data members
-    T_type * _bz_restrict data_;
-    T_type * _bz_restrict dataBlockAddress_;
-
-#ifdef BZ_DEBUG_REFERENCE_ROLLOVER
-    unsigned char references_;
-#else
-    int     references_;
-#endif
-
-    size_t  length_;
-};
-
-template<class P_type>
-class UnownedMemoryBlock : public MemoryBlock<P_type> {
-public:
-    UnownedMemoryBlock(size_t length, P_type* _bz_restrict data)
-        : MemoryBlock<P_type>(length,data)
-    {
-    }
-
-    virtual ~UnownedMemoryBlock()
-    {
-    }
-};
-
-template<class P_type>
-class NullMemoryBlock : public MemoryBlock<P_type> {
-public:
-    NullMemoryBlock()
-    { 
-        // This ensures that the delete operator will not be invoked
-        // on an instance of NullMemoryBlock in removeReference().
-        this->addReference();        
-    }
-
-    virtual ~NullMemoryBlock()  
-    { }
-};
-
-template<class P_type>
-class MemoryBlockReference {
-
-public:
-    typedef P_type T_type;
-
-protected:
-    T_type * _bz_restrict data_;
-
-private:
-    MemoryBlock<T_type>* block_;
-    static NullMemoryBlock<T_type> nullBlock_;
-
-public:
-
-    MemoryBlockReference()
-    {
-        block_ = &nullBlock_;
-        block_->addReference();
-        data_ = 0;
-    }
-
-    MemoryBlockReference(MemoryBlockReference<T_type>& ref)
-    {
-        block_ = ref.block_;
-        block_->addReference();
-        data_ = block_->data();
-    }
-
-    MemoryBlockReference(MemoryBlockReference<T_type>& ref, size_t offset)
-    {
-        block_ = ref.block_;
-        block_->addReference();
-        data_ = block_->data() + offset;
-    }
-
-    MemoryBlockReference(size_t length, T_type* data, 
-        preexistingMemoryPolicy deletionPolicy)
-    {
-        // Create a memory block using already allocated memory. 
-
-        // Note: if the deletionPolicy is duplicateData, this must
-        // be handled by the leaf class.  In MemoryBlockReference,
-        // this is treated as neverDeleteData; the leaf class (e.g. Array)
-        // must duplicate the data.
-
-        if ((deletionPolicy == neverDeleteData) 
-          || (deletionPolicy == duplicateData))
-            block_ = new UnownedMemoryBlock<T_type>(length, data);
-        else if (deletionPolicy == deleteDataWhenDone)
-            block_ = new MemoryBlock<T_type>(length, data);
-        block_->addReference();
-
-#ifdef BZ_DEBUG_LOG_ALLOCATIONS
-    cout << "MemoryBlockReference: created MemoryBlock at "
-         << ((void*)block_) << endl;
-#endif
-
-        data_ = data;
-    }
-
-    _bz_explicit MemoryBlockReference(size_t items)
-    {
-        block_ = new MemoryBlock<T_type>(items);
-        block_->addReference();
-        data_ = block_->data();
-
-#ifdef BZ_DEBUG_LOG_ALLOCATIONS
-    cout << "MemoryBlockReference: created MemoryBlock at "
-         << ((void*)block_) << endl;
-#endif
-
-    }
-
-    void blockRemoveReference()
-    {
-        block_->removeReference();
-        if ((block_->references() == 0) && (block_ != &nullBlock_))
-        {
-#ifdef BZ_DEBUG_LOG_ALLOCATIONS
-    cout << "MemoryBlock: no more refs, delete MemoryBlock object at "
-         << ((void*)block_) << endl;
-#endif
-
-            delete block_;
-        }
-    }
-
-   ~MemoryBlockReference()
-    {
-        blockRemoveReference();
-    }
-
-    int numReferences() const
-    {
-        return block_->references();
-    }
-
-protected:
-
-    void changeToNullBlock()
-    {
-        blockRemoveReference();
-        block_ = &nullBlock_;
-        block_->addReference();
-        data_ = 0;
-    }
-
-    void changeBlock(MemoryBlockReference<T_type>& ref, size_t offset)
-    {
-        blockRemoveReference();
-        block_ = ref.block_;
-        block_->addReference();
-        data_ = block_->data() + offset;
-    }
-
-    void newBlock(size_t items)
-    {
-        blockRemoveReference();
-        block_ = new MemoryBlock<T_type>(items);
-        block_->addReference();
-        data_ = block_->data();
-
-#ifdef BZ_DEBUG_LOG_ALLOCATIONS
-    cout << "MemoryBlockReference: created MemoryBlock at "
-         << ((void*)block_) << endl;
-#endif
-    }
-
-private:
-    void operator=(const MemoryBlockReference<T_type>&)
-    { }
-};
-
-
-BZ_NAMESPACE_END
-
-#include <blitz/memblock.cc>
-
-#endif // __BZ_MEMBLOCK_H__
diff --git a/weave/blitz-20001213/blitz/meta/dot.h b/weave/blitz-20001213/blitz/meta/dot.h
deleted file mode 100644
index 0f42ac0..0000000
--- a/weave/blitz-20001213/blitz/meta/dot.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/***************************************************************************
- * blitz/meta/dot.h      Tiny vector dot product metaprogram
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:38  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:08:44  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_META_DOT_H
-#define BZ_META_DOT_H
-
-#ifndef BZ_PROMOTE_H
- #include <blitz/promote.h>
-#endif
-
-#ifndef BZ_METAPROG_H
- #include <blitz/meta/metaprog.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<int N, int I>
-class _bz_meta_vectorDot {
-public:
-    enum { loopFlag = (I < N-1) ? 1 : 0 };
-
-    template<class T_expr1, class T_expr2>
-    static inline BZ_PROMOTE(_bz_typename T_expr1::T_numtype,
-        _bz_typename T_expr2::T_numtype)
-    f(const T_expr1& a, const T_expr2& b)
-    {
-        return a[I] * b[I]
-            + _bz_meta_vectorDot<loopFlag * N, loopFlag * (I+1)>::f(a,b);
-    }
-
-    template<class T_expr1, class T_expr2>
-    static inline BZ_PROMOTE(_bz_typename T_expr1::T_numtype,
-        _bz_typename T_expr2::T_numtype)
-    f_value_ref(T_expr1 a, const T_expr2& b)
-    {
-        return a[I] * b[I]
-            + _bz_meta_vectorDot<loopFlag * N, loopFlag * (I+1)>::f(a,b);
-    }
-
-    template<class T_expr1, class T_expr2>
-    static inline BZ_PROMOTE(_bz_typename T_expr1::T_numtype,
-        _bz_typename T_expr2::T_numtype)
-    f_ref_value(const T_expr1& a, T_expr2 b)
-    {
-        return a[I] * b[I]
-            + _bz_meta_vectorDot<loopFlag * N, loopFlag * (I+1)>::f(a,b);
-    }
-
-    template<class T_expr1, class P_numtype2>
-    static inline BZ_PROMOTE(_bz_typename T_expr1::T_numtype,
-        P_numtype2)
-    dotWithArgs(const T_expr1& a, P_numtype2 i1, P_numtype2 i2=0,
-        P_numtype2 i3=0, P_numtype2 i4=0, P_numtype2 i5=0, P_numtype2 i6=0,
-        P_numtype2 i7=0, P_numtype2 i8=0, P_numtype2 i9=0, P_numtype2 i10=0)
-    {
-        return a[I] * i1  
-            + _bz_meta_vectorDot<loopFlag * N, loopFlag * (I+1)>::dotWithArgs
-                 (a, i2, i3, i4, i5, i6, i7, i8, i9);
-    }
-};
-
-template<>
-class _bz_meta_vectorDot<0,0> {
-public:
-    template<class T_expr1, class T_expr2>
-    static inline _bz_meta_nullOperand f(const T_expr1&, const T_expr2&)
-    { return _bz_meta_nullOperand(); }
-
-    template<class T_expr1, class P_numtype2>
-    static inline _bz_meta_nullOperand 
-    dotWithArgs(const T_expr1& a, P_numtype2 i1, P_numtype2 i2=0,
-        P_numtype2 i3=0, P_numtype2 i4=0, P_numtype2 i5=0, P_numtype2 i6=0,
-        P_numtype2 i7=0, P_numtype2 i8=0, P_numtype2 i9=0, P_numtype2 i10=0)
-    {
-        return _bz_meta_nullOperand(); 
-    }
-
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_META_DOT_H
diff --git a/weave/blitz-20001213/blitz/meta/matassign.h b/weave/blitz-20001213/blitz/meta/matassign.h
deleted file mode 100644
index 65ab992..0000000
--- a/weave/blitz-20001213/blitz/meta/matassign.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/***************************************************************************
- * blitz/meta/matassign.h   TinyMatrix assignment metaprogram
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:38  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:08:44  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-
-#ifndef BZ_META_MATASSIGN_H
-#define BZ_META_MATASSIGN_H
-
-BZ_NAMESPACE(blitz)
-
-template<int N_rows, int N_columns, int I, int J>
-class _bz_meta_matAssign2 {
-public:
-    enum { go = (J < N_columns - 1) ? 1 : 0 };
-
-    template<class T_matrix, class T_expr, class T_updater>
-    static inline void f(T_matrix& mat, T_expr expr, T_updater u)
-    {
-        u.update(mat(I,J), expr(I,J));
-        _bz_meta_matAssign2<N_rows * go, N_columns * go, I * go, (J+1) * go>
-            ::f(mat, expr, u);
-    }
-};
-
-template<>
-class _bz_meta_matAssign2<0,0,0,0> {
-public:
-    template<class T_matrix, class T_expr, class T_updater>
-    static inline void f(T_matrix& mat, T_expr expr, T_updater u)
-    { }
-};
-
-template<int N_rows, int N_columns, int I> 
-class _bz_meta_matAssign {
-public:
-    enum { go = (I < N_rows-1) ? 1 : 0 };
-
-    template<class T_matrix, class T_expr, class T_updater>
-    static inline void f(T_matrix& mat, T_expr expr, T_updater u)
-    {
-        _bz_meta_matAssign2<N_rows, N_columns, I, 0>::f(mat, expr, u);
-        _bz_meta_matAssign<N_rows * go, N_columns * go, (I+1) * go>
-            ::f(mat, expr, u);
-    }
-};
-
-template<>
-class _bz_meta_matAssign<0,0,0> {
-public:
-    template<class T_matrix, class T_expr, class T_updater>
-    static inline void f(T_matrix& mat, T_expr expr, T_updater u)
-    { }
-};
-
-
-BZ_NAMESPACE_END
-
-#endif // BZ_META_ASSIGN_H
diff --git a/weave/blitz-20001213/blitz/meta/matmat.h b/weave/blitz-20001213/blitz/meta/matmat.h
deleted file mode 100644
index a0b7a38..0000000
--- a/weave/blitz-20001213/blitz/meta/matmat.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/***************************************************************************
- * blitz/meta/matmat.h   TinyMatrix matrix-matrix product metaprogram
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:38  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:08:44  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_META_MATMAT_H
-#define BZ_META_MATMAT_H
-
-#ifndef BZ_TINYMAT_H
- #error <blitz/meta/matmat.h> must be included via <blitz/tinymat.h>
-#endif
-
-#include <blitz/meta/metaprog.h>
-#include <blitz/tinymatexpr.h>
-
-BZ_NAMESPACE(blitz)
-
-// Template metaprogram for matrix-matrix multiplication
-template<int N_rows1, int N_columns, int N_columns2, int N_rowStride1,
-    int N_colStride1, int N_rowStride2, int N_colStride2, int K>
-class _bz_meta_matrixMatrixProduct {
-public:
-    enum { go = (K != N_columns - 1) };
-
-    template<class T_numtype1, class T_numtype2>
-    static inline BZ_PROMOTE(T_numtype1, T_numtype2)
-    f(const T_numtype1* matrix1, const T_numtype2* matrix2, int i, int j)
-    {
-        return matrix1[i * N_rowStride1 + K * N_colStride1]
-            * matrix2[K * N_rowStride2 + j * N_colStride2]
-            + _bz_meta_matrixMatrixProduct<N_rows1 * go, N_columns * go,
-                N_columns2 * go, N_rowStride1 * go, N_colStride1 * go,
-                N_rowStride2 * go, N_colStride2 * go, (K+1) * go>
-              ::f(matrix1, matrix2, i, j);
-    }
-};
-
-template<>
-class _bz_meta_matrixMatrixProduct<0,0,0,0,0,0,0,0> {
-public:
-    static inline _bz_meta_nullOperand f(const void*, const void*, int, int)
-    { return _bz_meta_nullOperand(); }
-};
-
-
-
-
-template<class T_numtype1, class T_numtype2, int N_rows1, int N_columns,
-    int N_columns2, int N_rowStride1, int N_colStride1,
-    int N_rowStride2, int N_colStride2>
-class _bz_tinyMatrixMatrixProduct {
-public:
-    typedef BZ_PROMOTE(T_numtype1, T_numtype2) T_numtype;
-
-    enum { rows = N_rows1, columns = N_columns2 };
-
-    _bz_tinyMatrixMatrixProduct(const T_numtype1* matrix1,
-        const T_numtype2* matrix2)
-        : matrix1_(matrix1), matrix2_(matrix2)
-    { }
-
-    _bz_tinyMatrixMatrixProduct(const _bz_tinyMatrixMatrixProduct<T_numtype1,
-        T_numtype2, N_rows1, N_columns, N_columns2, N_rowStride1, N_colStride1,
-        N_rowStride2, N_colStride2>& x)
-        : matrix1_(x.matrix1_), matrix2_(x.matrix2_)
-    { }
-
-    const T_numtype1* matrix1() const
-    { return matrix1_; }
-
-    const T_numtype2* matrix2() const
-    { return matrix2_; }
-
-    T_numtype operator()(int i, int j) const
-    {
-        return _bz_meta_matrixMatrixProduct<N_rows1, N_columns,
-            N_columns2, N_rowStride1, N_colStride1, N_rowStride2,
-            N_colStride2, 0>::f(matrix1_, matrix2_, i, j);
-    }
-
-protected:
-    const T_numtype1* matrix1_;
-    const T_numtype2* matrix2_;    
-};
-
-template<class T_numtype1, class T_numtype2, int N_rows1, int N_columns1,
-    int N_columns2>
-inline
-_bz_tinyMatExpr<_bz_tinyMatrixMatrixProduct<T_numtype1, T_numtype2, N_rows1, 
-    N_columns1, N_columns2, N_columns1, 1, N_columns2, 1> >
-product(const TinyMatrix<T_numtype1, N_rows1, N_columns1>& a,
-    const TinyMatrix<T_numtype2, N_columns1, N_columns2>& b)
-{
-    typedef _bz_tinyMatrixMatrixProduct<T_numtype1, T_numtype2,
-        N_rows1, N_columns1, N_columns2, N_columns1, 1, N_columns2, 1> T_expr;
-    return _bz_tinyMatExpr<T_expr>(T_expr(a.data(), b.data()));
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_META_MATMAT_H
-
diff --git a/weave/blitz-20001213/blitz/meta/matvec.h b/weave/blitz-20001213/blitz/meta/matvec.h
deleted file mode 100644
index d6012f6..0000000
--- a/weave/blitz-20001213/blitz/meta/matvec.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/***************************************************************************
- * blitz/tiny/matvec.h   TinyMatrix/TinyVector product metaprogram
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:38  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:08:44  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_META_MATVEC_H
-#define BZ_META_MATVEC_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_VECEXPRWRAP_H
- #include <blitz/vecexprwrap.h>
-#endif
-
-#ifndef BZ_METAPROG_H
- #include <blitz/meta/metaprog.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Forward declarations
-template<int N_rows, int N_columns, int N_rowStride, int N_colStride,
-    int N_vecStride, int J>
-class _bz_meta_matrixVectorProduct2;
-
-
-template<class T_numtype1, class T_numtype2, int N_rows, int N_columns, 
-    int N_rowStride, int N_colStride, int N_vecStride>
-class _bz_tinyMatrixVectorProduct {
-public:
-    typedef BZ_PROMOTE(T_numtype1, T_numtype2) T_numtype;
-    
-    _bz_tinyMatrixVectorProduct(const _bz_tinyMatrixVectorProduct<T_numtype1,
-        T_numtype2, N_rows, N_columns, N_rowStride, N_colStride, 
-        N_vecStride>& z)
-            : matrix_(z.matrix_), vector_(z.vector_)
-    { }
-
-    _bz_tinyMatrixVectorProduct(const T_numtype1* matrix, 
-        const T_numtype2* vector)
-        : matrix_(matrix), vector_(vector)
-    { }
-
-    T_numtype operator[](unsigned i) const
-    {
-        return _bz_meta_matrixVectorProduct2<N_rows, N_columns, N_rowStride,
-            N_colStride, N_vecStride, 0>::f(matrix_, vector_, i);
-    }
-
-    T_numtype operator()(unsigned i) const
-    {
-        return _bz_meta_matrixVectorProduct2<N_rows, N_columns, N_rowStride,
-            N_colStride, N_vecStride, 0>::f(matrix_, vector_, i);
-    }
-
-    enum {
-        _bz_staticLengthCount = 1,
-        _bz_dynamicLengthCount = 0,
-        _bz_staticLength = N_rows
-
-#ifdef BZ_HAVE_COSTS
-     ,
-        _bz_costPerEval = 2 * N_columns * costs::memoryAccess
-            + (N_columns-1) * costs::add
-#endif
-
-    };
-
-    unsigned _bz_suggestLength() const
-    {
-        return N_rows;
-    }
-
-    _bz_bool _bz_hasFastAccess() const
-    { return _bz_true; }
-
-    T_numtype _bz_fastAccess(unsigned i) const
-    {
-        return _bz_meta_matrixVectorProduct2<N_rows, N_columns, N_rowStride,
-            N_colStride, N_vecStride, 0>::f(matrix_, vector_, i);
-    }
-
-    unsigned length(unsigned recommendedLength) const
-    { return N_rows; }
-
-    const T_numtype1* matrix() const
-    { return matrix_; }
-
-    const T_numtype2* vector() const
-    { return vector_; }
-
-protected:
-    const T_numtype1* matrix_;
-    const T_numtype2* vector_;
-};
-
-template<class T_numtype1, class T_numtype2, int N_rows, int N_columns>
-inline _bz_VecExpr<_bz_tinyMatrixVectorProduct<T_numtype1, T_numtype2, 
-    N_rows, N_columns, N_columns, 1, 1> >
-product(const TinyMatrix<T_numtype1, N_rows, N_columns>& matrix,
-    const TinyVector<T_numtype2, N_columns>& vector)
-{
-    typedef _bz_tinyMatrixVectorProduct<T_numtype1, T_numtype2, N_rows, 
-        N_columns, N_columns, 1, 1> T_expr;
-    return _bz_VecExpr<T_expr>(T_expr(matrix.data(), vector.data()));
-}
-
-// productTranspose added by Marc Duflot (m.duflot@ulg.ac.be)
-
-template<class T_numtype1, class T_numtype2, int N_rows, int N_columns>
-inline _bz_VecExpr<_bz_tinyMatrixVectorProduct<T_numtype1, T_numtype2,
-    N_columns, N_rows, 1, N_columns, 1> >
-productTranspose(const TinyMatrix<T_numtype1, N_rows, N_columns>& matrix,
-    const TinyVector<T_numtype2, N_rows>& vector)
-{
-    typedef _bz_tinyMatrixVectorProduct<T_numtype1, T_numtype2,
-        N_columns, N_rows, 1, N_columns, 1> T_expr;
-    return _bz_VecExpr<T_expr>(T_expr(matrix.data(), vector.data()));
-}
-
-
-// Template metaprogram for matrix-vector multiplication
-
-template<int N_rows, int N_columns, int N_rowStride, int N_colStride,
-    int N_vecStride, int J>
-class _bz_meta_matrixVectorProduct2 {
-
-public:
-    enum { go = J < (N_columns-1) };
-   
-    template<class T_numtype1, class T_numtype2> 
-    static inline BZ_PROMOTE(T_numtype1, T_numtype2)
-    f(const T_numtype1* matrix, const T_numtype2* vector, int i)
-    {
-        return matrix[i * N_rowStride + J * N_colStride]
-            * vector[J * N_vecStride]
-
-            + _bz_meta_matrixVectorProduct2<N_rows * go, N_columns * go,
-                N_rowStride * go, N_colStride * go, N_vecStride * go, (J+1)*go>
-                ::f(matrix, vector, i);
-    }
-    
-};
-
-template<>
-class _bz_meta_matrixVectorProduct2<0,0,0,0,0,0> {
-public:
-    static inline _bz_meta_nullOperand f(const void*, const void*, int)
-    { return _bz_meta_nullOperand(); }
-};
-
-template<int N_rows, int N_columns, int N_rowStride, int N_colStride,
-    int N_vecStride, int I>
-class _bz_meta_matrixVectorProduct {
-public:
-    enum { go = I < (N_rows - 1) };
-
-    template<class T_numtype1, class T_numtype2, class T_numtype3>
-    static inline void f(TinyVector<T_numtype3, N_rows>& result,
-        const T_numtype1* matrix, const T_numtype2* vector)
-    {
-        result[I] = _bz_meta_matrixVectorProduct2<N_rows, N_columns,
-            N_rowStride, N_colStride, N_vecStride, 0>::f(matrix,vector, I);
-
-        _bz_meta_matrixVectorProduct<N_rows * go, N_columns * go,
-            N_rowStride * go, N_colStride * go, N_vecStride * go, (I+1)*go>
-              ::f(result, matrix, vector);
-    }
-};
-
-template<>
-class _bz_meta_matrixVectorProduct<0,0,0,0,0,0> {
-public:
-    static inline void f(const _bz_tinyBase&, const void*, const void*)
-    { }
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_META_MATVEC_H
-
diff --git a/weave/blitz-20001213/blitz/meta/metaprog.h b/weave/blitz-20001213/blitz/meta/metaprog.h
deleted file mode 100644
index 47eb925..0000000
--- a/weave/blitz-20001213/blitz/meta/metaprog.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/***************************************************************************
- * blitz/meta/metaprog.h   Useful metaprogram declarations
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:38  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:08:44  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_META_METAPROG_H
-#define BZ_META_METAPROG_H
-
-BZ_NAMESPACE(blitz)
-
-// Null Operand
-
-class _bz_meta_nullOperand {
-public:
-    _bz_meta_nullOperand() { }
-};
-
-template<class T> inline T operator+(const T& a, _bz_meta_nullOperand)
-{ return a; }
-template<class T> inline T operator*(const T& a, _bz_meta_nullOperand)
-{ return a; }
-
-
-// MetaMax
-
-template<int N1, int N2>
-class _bz_meta_max {
-public:
-    enum { max = (N1 > N2) ? N1 : N2 };
-};
-
-// MetaMin
-
-template<int N1, int N2>
-class _bz_meta_min {
-public:
-    enum { min = (N1 < N2) ? N1 : N2 };
-};
-
-BZ_NAMESPACE_END 
-
-#endif // BZ_META_METAPROG_H
diff --git a/weave/blitz-20001213/blitz/meta/product.h b/weave/blitz-20001213/blitz/meta/product.h
deleted file mode 100644
index 1883060..0000000
--- a/weave/blitz-20001213/blitz/meta/product.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/***************************************************************************
- * blitz/meta/product.h  TinyVector product metaprogram
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:38  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:08:44  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_META_PRODUCT_H
-#define BZ_META_PRODUCT_H
-
-#ifndef BZ_PROMOTE_H
- #include <blitz/promote.h>
-#endif
-
-#ifndef BZ_METAPROG_H
- #include <blitz/meta/metaprog.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<int N, int I>
-class _bz_meta_vectorProduct {
-public:
-    enum { loopFlag = (I < N-1) ? 1 : 0 };
-
-    template<class T_expr1>
-    static inline BZ_SUMTYPE(_bz_typename T_expr1::T_numtype)
-    f(const T_expr1& a)
-    {
-        return a[I] * _bz_meta_vectorProduct<loopFlag * N, 
-            loopFlag * (I+1)>::f(a);
-    }
-};
-
-template<>
-class _bz_meta_vectorProduct<0,0> {
-public:
-    template<class T_expr1>
-    static inline _bz_meta_nullOperand f(const T_expr1&)
-    { return _bz_meta_nullOperand(); }
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_META_PRODUCT_H
diff --git a/weave/blitz-20001213/blitz/meta/sum.h b/weave/blitz-20001213/blitz/meta/sum.h
deleted file mode 100644
index 6a777d0..0000000
--- a/weave/blitz-20001213/blitz/meta/sum.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/***************************************************************************
- * blitz/meta/sum.h      TinyVector sum metaprogram
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:38  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:08:44  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_META_SUM_H
-#define BZ_META_SUM_H
-
-#ifndef BZ_METAPROG_H
- #include <blitz/meta/metaprog.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<int N, int I>
-class _bz_meta_vectorSum {
-public:
-    enum { loopFlag = (I < N-1) ? 1 : 0 };
-
-    template<class T_expr1>
-    static inline _bz_typename T_expr1::T_numtype
-    f(const T_expr1& a)
-    {
-        return a[I] +
-            + _bz_meta_vectorSum<loopFlag * N, loopFlag * (I+1)>::f(a);
-    }
-};
-
-template<>
-class _bz_meta_vectorSum<0,0> {
-public:
-    template<class T_expr1>
-    static inline _bz_meta_nullOperand f(const T_expr1&)
-    { return _bz_meta_nullOperand(); }
-
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_META_SUM_H
diff --git a/weave/blitz-20001213/blitz/meta/vecassign.h b/weave/blitz-20001213/blitz/meta/vecassign.h
deleted file mode 100644
index bbca2ef..0000000
--- a/weave/blitz-20001213/blitz/meta/vecassign.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/***************************************************************************
- * blitz/meta/vecassign.h   TinyVector assignment metaprogram
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:38  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:13  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:08:44  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_META_VECASSIGN_H
-#define BZ_META_VECASSIGN_H
-
-BZ_NAMESPACE(blitz)
-
-template<int N, int I> 
-class _bz_meta_vecAssign {
-public:
-    enum { loopFlag = (I < N-1) ? 1 : 0 };
-
-    template<class T_vector, class T_expr, class T_updater>
-    static inline void fastAssign(T_vector& vec, T_expr expr, T_updater u)
-    {
-        u.update(vec[I], expr._bz_fastAccess(I));
-        _bz_meta_vecAssign<N * loopFlag, (I+1) * loopFlag>
-           ::fastAssign(vec,expr,u);
-    }
-
-    template<class T_vector, class T_expr, class T_updater>
-    static inline void assign(T_vector& vec, T_expr expr, T_updater u)
-    {
-        u.update(vec[I], expr[I]);
-        _bz_meta_vecAssign<N * loopFlag, (I+1) * loopFlag>
-           ::assign(vec,expr,u);
-    }
-
-    template<class T_vector, class T_numtype, class T_updater>
-    static inline void assignWithArgs(T_vector& vec, T_updater u,
-        T_numtype x0, T_numtype x1=0, T_numtype x2=0, T_numtype x3=0,
-        T_numtype x4=0, T_numtype x5=0, T_numtype x6=0, T_numtype x7=0,
-        T_numtype x8=0, T_numtype x9=0)
-    {
-        u.update(vec[I], x0);
-        _bz_meta_vecAssign<N * loopFlag, (I+1) * loopFlag>
-            ::assignWithArgs(vec, u, x1, x2, x3, x4, x5, x6, x7, x8, x9);
-    }
-        
-};
-
-template<>
-class _bz_meta_vecAssign<0,0> {
-public:
-    template<class T_vector, class T_expr, class T_updater>
-    static inline void fastAssign(T_vector& vec, T_expr expr, T_updater u)
-    { }
-
-    template<class T_vector, class T_expr, class T_updater>
-    static inline void assign(T_vector& vec, T_expr expr, T_updater u)
-    { }
-
-    template<class T_vector, class T_numtype, class T_updater>
-    static inline void assignWithArgs(T_vector& vec, T_updater u,
-        T_numtype x0, T_numtype x1=0, T_numtype x2=0, T_numtype x3=0,
-        T_numtype x4=0, T_numtype x5=0, T_numtype x6=0, T_numtype x7=0,
-        T_numtype x8=0, T_numtype x9=0)
-    {
-    }
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_META_ASSIGN_H
diff --git a/weave/blitz-20001213/blitz/minmax.h b/weave/blitz-20001213/blitz/minmax.h
deleted file mode 100644
index 1a2d0e5..0000000
--- a/weave/blitz-20001213/blitz/minmax.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef BZ_MINMAX_H
-#define BZ_MINMAX_H
-
-#include <blitz/promote.h>
-
-BZ_NAMESPACE(blitz)
-
-/*
- * These functions are in their own namespace (blitz::minmax) to avoid
- * conflicts with the array reduction operations min and max.
- */
-
-BZ_NAMESPACE(minmax)
-
-template<class T1, class T2>
-BZ_PROMOTE(T1,T2) min(const T1& a, const T2& b)
-{
-    typedef BZ_PROMOTE(T1,T2) T_promote;
-
-    if (a <= b)
-        return T_promote(a);
-    else
-        return T_promote(b);
-}
-
-template<class T1, class T2>
-BZ_PROMOTE(T1,T2) max(const T1& a, const T2& b)
-{
-    typedef BZ_PROMOTE(T1,T2) T_promote;
-
-    if (a >= b)
-        return T_promote(a);
-    else
-        return T_promote(b);
-}
-
-BZ_NAMESPACE_END
-
-BZ_NAMESPACE_END
-
-#endif
diff --git a/weave/blitz-20001213/blitz/mstruct.h b/weave/blitz-20001213/blitz/mstruct.h
deleted file mode 100644
index 0bb5fd8..0000000
--- a/weave/blitz-20001213/blitz/mstruct.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/***************************************************************************
- * blitz/mstruct.h      Matrix structure classes
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_MSTRUCT_H
-#define BZ_MSTRUCT_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_ZERO_H
- #include <blitz/zero.h>
-#endif
-
-/*
- * Each matrix structure class encapsulates a storage format for matrix
- * data.  It is responsible for:
- * - Storing the size of the matrix
- * - Calculating how many unique elements the matrix will have
- * - Mapping indices (i,j) onto memory locations
- * - Performing any sign reversals or conjugations when matrix
- *   elements are retrieved (e.g. in a Hermitian or Skew symmetric
- *   matrix)
- *
- * Every matrix structure class must provide these methods:
- *
- * ctor()
- * ctor(unsigned rows, unsigned cols)
- * unsigned columns() const;
- * unsigned cols()    const;
- * unsigned firstInRow() const;
- * unsigned firstInCol() const;
- * template<class T> T& get(T* data, unsigned i, unsigned j);
- * template<class T> T  get(const T* data, unsigned i, unsigned j) const;
- * bool inRange(unsigned i, unsigned j) const
- * unsigned lastInRow() const;
- * unsigned lastInCol() const;
- * unsigned numElements() const;
- * void resize(unsigned rows, unsigned cols);
- * unsigned rows()    const;
- *
- * Each matrix structure class must declare a public type
- * T_iterator which is an iterator to scan through the unique
- * entries of the matrix.  The iterator class must provide
- * these methods:
- *
- * ctor(unsigned rows, unsigned cols)
- * unsigned offset() const
- * operator bool() const
- * unsigned row() const
- * unsigned col() const
- */
-
-BZ_NAMESPACE(blitz)
-
-class MatrixStructure { };
-
-class AsymmetricMatrix : public MatrixStructure {
-public:
-    AsymmetricMatrix()
-        : rows_(0), cols_(0)
-    { }
-
-    AsymmetricMatrix(unsigned rows, unsigned cols)
-        : rows_(rows), cols_(cols)
-    { }
-
-    unsigned columns() const
-    { return cols_; }
-
-    unsigned cols() const
-    { return cols_; }
-
-    _bz_bool inRange(unsigned i, unsigned j) const
-    {
-        return (i < rows_) && (j < cols_);
-    }
-
-    void resize(unsigned rows, unsigned cols)
-    {
-        rows_ = rows;
-        cols_ = cols;
-    }
-
-    unsigned rows() const
-    { return rows_; }
-
-protected:
-    unsigned rows_, cols_;
-};
-
-// Still to be implemented:
-// SkewSymmetric
-// Hermitian
-// Tridiagonal
-// Banded<L,H>
-// Upper bidiagonal
-// Lower bidiagonal
-// Upper Hessenberg
-// Lower Hessenberg
-
-BZ_NAMESPACE_END
-
-#include <blitz/matgen.h>         // RowMajor and ColumnMajor general matrices
-#include <blitz/matsymm.h>        // Symmetric
-#include <blitz/matdiag.h>        // Diagonal
-#include <blitz/mattoep.h>        // Toeplitz
-#include <blitz/matltri.h>        // Lower triangular
-#include <blitz/matutri.h>        // Upper triangular
-
-#endif // BZ_MSTRUCT_H
diff --git a/weave/blitz-20001213/blitz/numinquire.h b/weave/blitz-20001213/blitz/numinquire.h
deleted file mode 100644
index 69b13db..0000000
--- a/weave/blitz-20001213/blitz/numinquire.h
+++ /dev/null
@@ -1,333 +0,0 @@
-/***************************************************************************
- * blitz/numinquire.h    Numeric inquiry functions
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-/*
- * These numeric inquiry functions are provided as an alternative
- * to the somewhat klunky numeric_limits<T>::yadda_yadda syntax.
- * Where a similar Fortran 90 function exists, the same name has
- * been used.
- *
- * The argument in all cases is a dummy of the appropriate type
- * (double, int, etc.)
- *
- * These functions assume that numeric_limits<T> has been specialized
- * for the appropriate case.  If not, the results are not useful.
- */
-
-#ifndef BZ_NUMINQUIRE_H
-#define BZ_NUMINQUIRE_H
-
-#ifndef BZ_HAVE_NUMERIC_LIMITS
-  #include <blitz/limits-hack.h>
-#else
-  #include <limits>
-#endif
-
-#ifndef BZ_RANGE_H
- #include <blitz/range.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * This traits class provides zero and one values for numeric
- * types.  This was previously a template function with specializations,
- * but the specializations were causing multiply-defined symbols
- * at link time.  TV 980226
- */
-
-template<class T_numtype>
-struct _bz_OneZeroTraits {
-    static inline T_numtype zero() { return 0; }
-    static inline T_numtype one()  { return 1; }
-};
-
-#ifdef BZ_HAVE_COMPLEX
-
-template<>
-struct _bz_OneZeroTraits<complex<float> > {
-    static inline complex<float> zero() { return complex<float>(0.0f,0.0f); }
-    static inline complex<float> one()  { return complex<float>(1.0f,0.0f); }
-};
-
-template<>
-struct _bz_OneZeroTraits<complex<double> > {
-    static inline complex<double> zero() { return complex<double>(0.0,0.0); }
-    static inline complex<double> one()  { return complex<double>(1.0,0.0); }
-};
-
-template<>
-struct _bz_OneZeroTraits<complex<long double> > {
-    static inline complex<long double> zero() 
-    { return complex<long double>(0.0,0.0); }
-
-    static inline complex<long double> one()  
-    { return complex<long double>(1.0,0.0); }
-};
-
-#endif // BZ_HAVE_COMPLEX
-
-template<class T>
-inline T zero(T)
-{
-    return _bz_OneZeroTraits<T>::zero();
-}
-
-template<class T>
-inline T one(T)
-{
-    return _bz_OneZeroTraits<T>::one();
-}
-
-template<class T>
-inline int digits(T)
-{
-    return numeric_limits<T>::digits;
-}
-
-template<class T>
-inline int digits10(T)
-{
-    return numeric_limits<T>::digits10;
-}
-
-template<class T>
-inline T epsilon(T) BZ_THROW
-{
-    return numeric_limits<T>::epsilon();
-}
-
-// neghuge() by Theodore Papadopoulo, to fix a problem with
-// max() reductions.
-template<class T>
-inline T neghuge(T) BZ_THROW
-{
-    return numeric_limits<T>::is_integer ?    numeric_limits<T>::min()
-                                         : - numeric_limits<T>::max();
-}
-
-template<class T>
-inline T huge(T) BZ_THROW
-{
-    return numeric_limits<T>::max();
-}
-
-template<class T>
-inline T tiny(T) BZ_THROW
-{
-    return numeric_limits<T>::min();
-}
-
-template<class T>
-inline int max_exponent(T)
-{
-    return numeric_limits<T>::max_exponent;
-}
-
-template<class T>
-inline int min_exponent(T)
-{
-    return numeric_limits<T>::min_exponent;
-}
-
-template<class T>
-inline int min_exponent10(T)
-{
-    return numeric_limits<T>::min_exponent10;
-}
-
-template<class T>
-inline int max_exponent10(T)
-{
-    return numeric_limits<T>::max_exponent10;
-}
-
-template<class T>
-inline int precision(T)
-{
-    return numeric_limits<T>::digits10;
-}
-
-template<class T>
-inline int radix(T)
-{
-    return numeric_limits<T>::radix;
-}
-
-template<class T>
-inline Range range(T)
-{
-    return Range(numeric_limits<T>::min_exponent10, 
-        numeric_limits<T>::max_exponent10);
-}
-
-template<class T>
-inline bool is_signed(T)
-{
-    return numeric_limits<T>::is_signed;
-}
-
-template<class T>
-inline bool is_integer(T)
-{
-    return numeric_limits<T>::is_integer;
-}
-
-template<class T>
-inline bool is_exact(T)
-{
-    return numeric_limits<T>::is_exact;
-}
-
-template<class T>
-inline T round_error(T) BZ_THROW
-{
-    return numeric_limits<T>::round_error();
-}
-
-template<class T>
-inline bool has_infinity(T) 
-{
-    return numeric_limits<T>::has_infinity;
-}
-
-template<class T>
-inline bool has_quiet_NaN(T)
-{
-    return numeric_limits<T>::has_quiet_NaN;
-}
-
-template<class T>
-inline bool has_signaling_NaN(T)
-{
-    return numeric_limits<T>::has_signaling_NaN;
-}
-
-// Provided for non-US english users
-template<class T>
-inline bool has_signalling_NaN(T)
-{
-    return numeric_limits<T>::has_signaling_NaN;
-}
-
-template<class T>
-inline bool has_denorm(T)
-{
-    return numeric_limits<T>::has_denorm;
-}
-
-template<class T>
-inline bool has_denorm_loss(T)
-{
-    return numeric_limits<T>::has_denorm_loss;
-}
-
-template<class T>
-inline T infinity(T) BZ_THROW
-{
-    return numeric_limits<T>::infinity();
-}
-
-template<class T>
-inline T quiet_NaN(T) BZ_THROW
-{
-    return numeric_limits<T>::quiet_NaN();
-}
-
-template<class T>
-inline T signaling_NaN(T) BZ_THROW
-{
-    return numeric_limits<T>::signaling_NaN();
-}
-
-template<class T>
-inline T signalling_NaN(T) BZ_THROW
-{
-    return numeric_limits<T>::signaling_NaN();
-}
-
-template<class T>
-inline T denorm_min(T) BZ_THROW
-{
-    return numeric_limits<T>::denorm_min();
-}
-
-template<class T>
-inline bool is_iec559(T)
-{
-    return numeric_limits<T>::is_iec559;
-}
-
-template<class T>
-inline bool is_bounded(T)
-{
-    return numeric_limits<T>::is_bounded;
-}
-
-template<class T>
-inline bool is_modulo(T)
-{
-    return numeric_limits<T>::is_modulo;
-}
-
-template<class T>
-inline bool traps(T)
-{
-    return numeric_limits<T>::traps;
-}
-
-template<class T>
-inline bool tinyness_before(T)
-{
-    return numeric_limits<T>::tinyness_before;
-}
-
-template<class T>
-inline BZ_STD_SCOPE(float_round_style) round_style(T)
-{
-    return numeric_limits<T>::round_style;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_NUMINQUIRE_H
-
diff --git a/weave/blitz-20001213/blitz/numtrait.h b/weave/blitz-20001213/blitz/numtrait.h
deleted file mode 100644
index dfcc26a..0000000
--- a/weave/blitz-20001213/blitz/numtrait.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/***************************************************************************
- * blitz/numtrait.h      Declaration of the NumericTypeTraits class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_NUMTRAIT_H
-#define BZ_NUMTRAIT_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-#ifndef BZ_USE_NUMTRAIT
-  #define BZ_SUMTYPE(X)    X
-  #define BZ_DIFFTYPE(X)   X
-  #define BZ_FLOATTYPE(X)  X
-  #define BZ_SIGNEDTYPE(X) X
-#else
-
-#define BZ_SUMTYPE(X)   _bz_typename NumericTypeTraits<X>::T_sumtype
-#define BZ_DIFFTYPE(X)  _bz_typename NumericTypeTraits<X>::T_difftype
-#define BZ_FLOATTYPE(X) _bz_typename NumericTypeTraits<X>::T_floattype
-#define BZ_SIGNEDTYPE(X) _bz_typename NumericTypeTraits<X>::T_signedtype
-
-template<class P_numtype>
-class NumericTypeTraits {
-public:
-    typedef P_numtype T_sumtype;    // Type to be used for summing
-    typedef P_numtype T_difftype;   // Type to be used for difference
-    typedef P_numtype T_floattype;  // Type to be used for floating-point
-                                    // calculations
-    typedef P_numtype T_signedtype; // Type to be used for signed calculations
-    enum { hasTrivialCtor = 0 };    // Assume the worst
-};
-
-#define BZDECLNUMTRAIT(X,Y,Z,W,U)                                   \
-    template<>                                                      \
-    class NumericTypeTraits<X> {                                    \
-    public:                                                         \
-        typedef Y T_sumtype;                                        \
-        typedef Z T_difftype;                                       \
-        typedef W T_floattype;                                      \
-        typedef U T_signedtype;                                     \
-        enum { hasTrivialCtor = 1 };                                \
-    }                                                               
-
-#ifdef BZ_BOOL
-    BZDECLNUMTRAIT(bool,unsigned,int,float,int);
-#endif
-
-BZDECLNUMTRAIT(char,int,int,float,char);
-BZDECLNUMTRAIT(unsigned char, unsigned, int, float,int);
-BZDECLNUMTRAIT(short int, int, int, float, short int);
-BZDECLNUMTRAIT(short unsigned int, unsigned int, int, float, int);
-BZDECLNUMTRAIT(int, long, int, float, int);
-BZDECLNUMTRAIT(unsigned int, unsigned long, int, float, long);
-BZDECLNUMTRAIT(long, long, long, double, long);
-BZDECLNUMTRAIT(unsigned long, unsigned long, long, double, long);
-BZDECLNUMTRAIT(float, double, float, float, float);
-BZDECLNUMTRAIT(double, double, double, double, double);
-
-#ifdef BZ_HAVE_COMPLEX
-// BZDECLNUMTRAIT(complex<float>, complex<double>, complex<float>, complex<float>);
-// BZDECLNUMTRAIT(complex<double>, complex<long double>, complex<double>, complex<double>);
-#endif // BZ_HAVE_COMPLEX
-
-#endif // BZ_USE_NUMTRAIT
-
-BZ_NAMESPACE_END
-
-#endif // BZ_NUMTRAIT_H
diff --git a/weave/blitz-20001213/blitz/ops.h b/weave/blitz-20001213/blitz/ops.h
deleted file mode 100644
index acea6ba..0000000
--- a/weave/blitz-20001213/blitz/ops.h
+++ /dev/null
@@ -1,220 +0,0 @@
-/***************************************************************************
- * blitz/ops.h           Function objects for operators
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- *************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_OPS_H
-#define BZ_OPS_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_PROMOTE_H
- #include <blitz/promote.h>
-#endif
-
-#ifndef BZ_MATHFUNC_H
- #include <blitz/mathfunc.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * Originally these function objects had no template arguments, e.g.
- *
- * struct Add {
- *     template<class T_numtype1, class T_numtype2>
- *     static inline BZ_PROMOTE(T_numtype1, T_numtype2)
- *     apply(T_numtype1 a, T_numtype2 b)
- *     { return a + b; }
- * };
- *
- * This made for neater expression templates syntax.  However, there are
- * some situations in which users may want to override type promotion
- * for certain operations.  For example, in theoretical physics, there
- * are U1 objects which when multiplied yield U1 objects, but when added
- * yield a different type.  To allow for this kind of behaviour, function
- * objects have been changed to take template parameters:
- *
- * template<class T_numtype1, class T_numtype2>
- * struct Add {
- *     typedef BZ_PROMOTE(T_numtype1, T_numtype2) T_numtype;
- *
- *     static inline T_numtype apply(T_numtype1 a, T_numtype2 b)
- *     { return a + b; }
- * };
- *
- * Type promotion is performed inside the function object.  The expression
- * templates code always looks inside the function object to determine
- * the type promotion, e.g. Add<int,float>::T_numtype
- *
- * Users are free to specialize these function objects for their own types.
- */
-
-#define BZ_DEFINE_OP(name,op,symbol)                        \
-template<class T_numtype1, class T_numtype2>                \
-struct name {                                               \
-    typedef BZ_PROMOTE(T_numtype1, T_numtype2) T_numtype;   \
-                                                            \
-    static inline T_numtype                                 \
-    apply(T_numtype1 a, T_numtype2 b)                       \
-    { return a op b; }                                      \
-							    \
-    template<class T1, class T2>                            \
-    static inline void prettyPrint(string& str,             \
-        prettyPrintFormat& format, const T1& t1,            \
-        const T2& t2)                                       \
-    {                                                       \
-        str += "(";                                         \
-        t1.prettyPrint(str, format);                        \
-        str += symbol;                                      \
-        t2.prettyPrint(str, format);                        \
-        str += ")";                                         \
-    }                                                       \
-}
-
-BZ_DEFINE_OP(Add,+,"+");
-BZ_DEFINE_OP(Subtract,-,"-");
-BZ_DEFINE_OP(Multiply,*,"*");
-BZ_DEFINE_OP(Divide,/,"/");
-BZ_DEFINE_OP(Modulo,%,"%");
-BZ_DEFINE_OP(BitwiseXor,^,"^");
-BZ_DEFINE_OP(BitwiseAnd,&,"&");
-BZ_DEFINE_OP(BitwiseOr,|,"|");
-BZ_DEFINE_OP(ShiftRight,>>,">>");
-BZ_DEFINE_OP(ShiftLeft,<<,"<<");
-
-#define BZ_DEFINE_BOOL_OP(name,op,symbol)                   \
-template<class T_numtype1, class T_numtype2>                \
-struct name {                                               \
-    typedef bool T_numtype;                                 \
-    static inline bool                                      \
-    apply(T_numtype1 a, T_numtype2 b)                       \
-    { return a op b; }                                      \
-                                                            \
-    template<class T1, class T2>                            \
-    static inline void prettyPrint(string& str,             \
-        prettyPrintFormat& format, const T1& t1,            \
-        const T2& t2)                                       \
-    {                                                       \
-        str += "(";                                         \
-        t1.prettyPrint(str, format);                        \
-        str += symbol;                                      \
-        t2.prettyPrint(str, format);                        \
-        str += ")";                                         \
-    }                                                       \
-}
-
-BZ_DEFINE_BOOL_OP(Greater,>,">");
-BZ_DEFINE_BOOL_OP(Less,<,"<");
-BZ_DEFINE_BOOL_OP(GreaterOrEqual,>=,">=");
-BZ_DEFINE_BOOL_OP(LessOrEqual,<=,"<=");
-BZ_DEFINE_BOOL_OP(Equal,==,"==");
-BZ_DEFINE_BOOL_OP(NotEqual,!=,"!=");
-BZ_DEFINE_BOOL_OP(LogicalAnd,&&,"&&");
-BZ_DEFINE_BOOL_OP(LogicalOr,||,"||");
-
-template<class T_numtype1, class T_cast>
-struct Cast {
-    typedef T_cast T_numtype;
-    static inline T_cast apply(T_numtype1 a)
-    { return a; }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(T_cast);
-        str += "(";
-        a.prettyPrint(str, format);
-        str += ")";
-    }
-};
-
-template<class T_numtype1>
-struct LogicalNot {
-    typedef bool T_numtype;
-    static inline bool apply(T_numtype1 a)
-    { return !a; }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "!";
-        a.prettyPrint(str, format);
-    }
-};
-
-template<class T_numtype1>
-struct BitwiseNot {
-    typedef T_numtype1 T_numtype;
-    static inline T_numtype apply(T_numtype1 a)
-    { return ~a; }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "~";
-        a.prettyPrint(str,format);
-    }
-};
-
-template<class T_numtype1>
-struct Negate {
-    typedef T_numtype1 T_numtype;
-    static inline T_numtype apply(T_numtype1 a)
-    { return -a; }
-
-    template<class T1>
-    static void prettyPrint(string& str, prettyPrintFormat& format,
-        const T1& a)
-    {
-        str += "-";
-        a.prettyPrint(str, format);
-    }
-};
-BZ_NAMESPACE_END
-
-#endif
-
-
diff --git a/weave/blitz-20001213/blitz/prettyprint.h b/weave/blitz-20001213/blitz/prettyprint.h
deleted file mode 100644
index c7c81fc..0000000
--- a/weave/blitz-20001213/blitz/prettyprint.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/***************************************************************************
- * blitz/prettyprint.h      Format object for pretty-printing of
- *                          array expressions
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- */
-
-#ifndef BZ_PRETTYPRINT_H
-#define BZ_PRETTYPRINT_H
-
-BZ_NAMESPACE(blitz)
-
-class prettyPrintFormat {
-
-public:
-    prettyPrintFormat(_bz_bool terse = _bz_false)
-      : tersePrintingSelected_(terse)
-    {
-        arrayOperandCounter_ = 0;
-        scalarOperandCounter_ = 0;
-        dumpArrayShapes_ = _bz_false;
-    }
-
-    void setDumpArrayShapesMode()
-    {
-        dumpArrayShapes_ = _bz_true;
-    }
-
-    char nextArrayOperandSymbol()
-    {
-        return 'A' + ((arrayOperandCounter_++) % 26);
-    }
-
-    char nextScalarOperandSymbol()
-    {
-        return 's' + ((scalarOperandCounter_++) % 26);
-    }
-
-    _bz_bool tersePrintingSelected() const
-    { 
-        return tersePrintingSelected_;
-    }
-
-    _bz_bool dumpArrayShapesMode() const
-    {
-        return dumpArrayShapes_;
-    }
-
-private:
-    _bz_bool tersePrintingSelected_;
-    _bz_bool dumpArrayShapes_;
-    int arrayOperandCounter_;
-    int scalarOperandCounter_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_PRETTYPRINT_H
diff --git a/weave/blitz-20001213/blitz/promote-old.h b/weave/blitz-20001213/blitz/promote-old.h
deleted file mode 100644
index 2e3ff42..0000000
--- a/weave/blitz-20001213/blitz/promote-old.h
+++ /dev/null
@@ -1,1360 +0,0 @@
-/***********************************************************************
- * promote.h   Arithmetic type promotion trait class
- * Author: Todd Veldhuizen         (tveldhui@oonumerics.org)
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- */
-
-// Generated: genpromote.cpp Aug  7 1997 14:59:32
-
-template<class A, class B>
-class promote_trait {
-public:
-        typedef A   T_promote;
-};
-
-
-template<>
-class promote_trait<char, char> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<char, unsigned char> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<char, short int> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<char, short unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<char, int> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<char, unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<char, long> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<char, unsigned long> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<char, float> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<char, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<char, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<char, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<char, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<char, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<unsigned char, char> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, unsigned char> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, short int> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, short unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, int> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, long> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, unsigned long> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, float> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<unsigned char, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<unsigned char, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<unsigned char, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<unsigned char, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<short int, char> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<short int, unsigned char> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<short int, short int> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<short int, short unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<short int, int> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<short int, unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<short int, long> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<short int, unsigned long> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<short int, float> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<short int, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<short int, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<short int, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<short int, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<short int, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<short unsigned int, char> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, unsigned char> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, short int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, short unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, long> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, unsigned long> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, float> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<short unsigned int, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<short unsigned int, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<short unsigned int, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<short unsigned int, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<int, char> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<int, unsigned char> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<int, short int> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<int, short unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<int, int> {
-public:
-	typedef int T_promote;
-};
-
-template<>
-class promote_trait<int, unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<int, long> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<int, unsigned long> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<int, float> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<int, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<int, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<int, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<int, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<int, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<unsigned int, char> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, unsigned char> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, short int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, short unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, unsigned int> {
-public:
-	typedef unsigned int T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, long> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, unsigned long> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, float> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<unsigned int, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<unsigned int, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<unsigned int, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<unsigned int, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<long, char> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<long, unsigned char> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<long, short int> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<long, short unsigned int> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<long, int> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<long, unsigned int> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<long, long> {
-public:
-	typedef long T_promote;
-};
-
-template<>
-class promote_trait<long, unsigned long> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<long, float> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<long, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<long, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<long, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<long, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<long, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<unsigned long, char> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, unsigned char> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, short int> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, short unsigned int> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, int> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, unsigned int> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, long> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, unsigned long> {
-public:
-	typedef unsigned long T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, float> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<unsigned long, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<unsigned long, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<unsigned long, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<unsigned long, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<float, char> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<float, unsigned char> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<float, short int> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<float, short unsigned int> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<float, int> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<float, unsigned int> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<float, long> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<float, unsigned long> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<float, float> {
-public:
-	typedef float T_promote;
-};
-
-template<>
-class promote_trait<float, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<float, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<float, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<float, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<float, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<double, char> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, unsigned char> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, short int> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, short unsigned int> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, int> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, unsigned int> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, long> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, unsigned long> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, float> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, double> {
-public:
-	typedef double T_promote;
-};
-
-template<>
-class promote_trait<double, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<double, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<double, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<double, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-template<>
-class promote_trait<long double, char> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, unsigned char> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, short int> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, short unsigned int> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, int> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, unsigned int> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, long> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, unsigned long> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, float> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, double> {
-public:
-	typedef long double T_promote;
-};
-
-template<>
-class promote_trait<long double, long double> {
-public:
-	typedef long double T_promote;
-};
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<long double, complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<long double, complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<long double, complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , char> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , unsigned char> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , short int> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , short unsigned int> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , int> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , unsigned int> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , long> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , unsigned long> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , float> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , double> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , long double> {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , complex<float> > {
-public:
-	typedef complex<float>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<float> , complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , char> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , unsigned char> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , short int> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , short unsigned int> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , int> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , unsigned int> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , long> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , unsigned long> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , float> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , double> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , long double> {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , complex<float> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , complex<double> > {
-public:
-	typedef complex<double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<double> , complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , char> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , unsigned char> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , short int> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , short unsigned int> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , int> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , unsigned int> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , long> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , unsigned long> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , float> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , double> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , long double> {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , complex<float> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , complex<double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
-#ifdef BZ_HAVE_COMPLEX
-template<>
-class promote_trait<complex<long double> , complex<long double> > {
-public:
-	typedef complex<long double>  T_promote;
-};
-#endif
-
diff --git a/weave/blitz-20001213/blitz/promote.h b/weave/blitz-20001213/blitz/promote.h
deleted file mode 100644
index 7ab5b91..0000000
--- a/weave/blitz-20001213/blitz/promote.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/***********************************************************************
- * promote.h   Arithmetic type promotion trait class
- * Author: Todd Veldhuizen         (tveldhui@oonumerics.org)
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- */
-
-#ifndef BZ_PROMOTE_H
-#define BZ_PROMOTE_H
-
-#include <blitz/blitz.h>
-
-BZ_NAMESPACE(blitz)
-
-#ifdef BZ_TEMPLATE_QUALIFIED_RETURN_TYPE
-    #define BZ_PROMOTE(A,B) _bz_typename promote_trait<A,B>::T_promote
-#else
-    #define BZ_PROMOTE(A,B) A
-#endif
-
-#if defined(BZ_PARTIAL_SPECIALIZATION) && !defined(BZ_DISABLE_NEW_PROMOTE)
-
-/*
- * This compiler supports partial specialization, so type promotion
- * can be done the elegant way.  This implementation is after ideas
- * by Jean-Louis Leroy.
- */
-
-template<class T>
-struct precision_trait {
-    enum { precisionRank = 0,
-           knowPrecisionRank = 0 };
-};
-
-#define BZ_DECLARE_PRECISION(T,rank)          \
-    template<>                                \
-    struct precision_trait< T > {             \
-        enum { precisionRank = rank,          \
-           knowPrecisionRank = 1 };           \
-    };
-
-BZ_DECLARE_PRECISION(int,100)
-BZ_DECLARE_PRECISION(unsigned int,200)
-BZ_DECLARE_PRECISION(long,300)
-BZ_DECLARE_PRECISION(unsigned long,400)
-BZ_DECLARE_PRECISION(float,500)
-BZ_DECLARE_PRECISION(double,600)
-BZ_DECLARE_PRECISION(long double,700)
-
-#ifdef BZ_HAVE_COMPLEX
-BZ_DECLARE_PRECISION(complex<float>,800)
-BZ_DECLARE_PRECISION(complex<double>,900)
-BZ_DECLARE_PRECISION(complex<long double>,1000)
-#endif
-
-template<class T>
-struct autopromote_trait {
-    typedef T T_numtype;
-};
-
-#define BZ_DECLARE_AUTOPROMOTE(T1,T2)     \
-    template<>                            \
-    struct autopromote_trait<T1> {        \
-      typedef T2 T_numtype;               \
-    };
-
-// These are the odd cases where small integer types
-// are automatically promoted to int or unsigned int for
-// arithmetic.
-BZ_DECLARE_AUTOPROMOTE(bool, int)
-BZ_DECLARE_AUTOPROMOTE(char, int)
-BZ_DECLARE_AUTOPROMOTE(unsigned char, int)
-BZ_DECLARE_AUTOPROMOTE(short int, int)
-BZ_DECLARE_AUTOPROMOTE(short unsigned int, unsigned int)
-
-template<class T1, class T2, int promoteToT1>
-struct _bz_promote2 {
-    typedef T1 T_promote;
-};
-
-template<class T1, class T2>
-struct _bz_promote2<T1,T2,0> {
-    typedef T2 T_promote;
-};
-
-template<class T1_orig, class T2_orig>
-struct promote_trait {
-    // Handle promotion of small integers to int/unsigned int
-    typedef _bz_typename autopromote_trait<T1_orig>::T_numtype T1;
-    typedef _bz_typename autopromote_trait<T2_orig>::T_numtype T2;
-
-    // True if T1 is higher ranked
-    enum {
-      T1IsBetter =
-        BZ_ENUM_CAST(precision_trait<T1>::precisionRank) >
-          BZ_ENUM_CAST(precision_trait<T2>::precisionRank),
-
-    // True if we know ranks for both T1 and T2
-      knowBothRanks =
-        BZ_ENUM_CAST(precision_trait<T1>::knowPrecisionRank)
-      && BZ_ENUM_CAST(precision_trait<T2>::knowPrecisionRank),
-
-    // True if we know T1 but not T2
-      knowT1butNotT2 =  BZ_ENUM_CAST(precision_trait<T1>::knowPrecisionRank)
-        && !(BZ_ENUM_CAST(precision_trait<T2>::knowPrecisionRank)),
-
-    // True if we know T2 but not T1
-      knowT2butNotT1 =  BZ_ENUM_CAST(precision_trait<T2>::knowPrecisionRank)
-        && !(BZ_ENUM_CAST(precision_trait<T1>::knowPrecisionRank)),
-
-    // True if T1 is bigger than T2
-      T1IsLarger = sizeof(T1) >= sizeof(T2),
-
-    // We know T1 but not T2: true
-    // We know T2 but not T1: false
-    // Otherwise, if T1 is bigger than T2: true
-      defaultPromotion = knowT1butNotT2 ? _bz_false : 
-         (knowT2butNotT1 ? _bz_true : T1IsLarger)
-    };
-
-    // If we have both ranks, then use them.
-    // If we have only one rank, then use the unknown type.
-    // If we have neither rank, then promote to the larger type.
-
-    enum {
-      promoteToT1 = (BZ_ENUM_CAST(knowBothRanks) ? BZ_ENUM_CAST(T1IsBetter)
-        : BZ_ENUM_CAST(defaultPromotion)) ? 1 : 0
-    };
-
-    typedef typename _bz_promote2<T1,T2,promoteToT1>::T_promote T_promote;
-};
-
-#else  // !BZ_PARTIAL_SPECIALIZATION
-
-  // No partial specialization -- have to do it the ugly way.
-  #include <blitz/promote-old.h>
-
-#endif // !BZ_PARTIAL_SPECIALIZATION
-
-BZ_NAMESPACE_END
-
-#endif // BZ_PROMOTE_H
diff --git a/weave/blitz-20001213/blitz/rand-dunif.h b/weave/blitz-20001213/blitz/rand-dunif.h
deleted file mode 100644
index 704e3b0..0000000
--- a/weave/blitz-20001213/blitz/rand-dunif.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/***************************************************************************
- * blitz/rand-dunif.h    Discrete uniform generator
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_RAND_DUNIF_H
-#define BZ_RAND_DUNIF_H
-
-#ifndef BZ_RANDOM_H
- #include <blitz/random.h>
-#endif
-
-#ifndef BZ_RAND_UNIFORM_H
- #include <blitz/rand-uniform.h>
-#endif
-
-#include <math.h>
-
-BZ_NAMESPACE(blitz)
-
-template<class P_uniform BZ_TEMPLATE_DEFAULT(Uniform)>
-class DiscreteUniform {
-
-public:
-    typedef int T_numtype;
-    typedef P_uniform T_uniform;
-
-    DiscreteUniform(int low, int high, double=0)
-        : low_(low), range_(high-low+1)
-    { 
-    }
-
-    void randomize() 
-    { 
-        uniform_.randomize();
-    }
-  
-    int random()
-    { 
-        return int(uniform_.random() * range_ + low_);
-    } 
-
-private:
-    int low_, range_;
-    T_uniform uniform_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_RAND_DUNIF_H
-
diff --git a/weave/blitz-20001213/blitz/rand-mt.h b/weave/blitz-20001213/blitz/rand-mt.h
deleted file mode 100644
index 76f4f5f..0000000
--- a/weave/blitz-20001213/blitz/rand-mt.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/* A C-program for MT19937: Integer version (1998/4/6)            */
-/*  genrand() generates one pseudorandom unsigned integer (32bit) */
-/* which is uniformly distributed among 0 to 2^32-1  for each     */
-/* call. sgenrand(seed) set initial values to the working area    */
-/* of 624 words. Before genrand(), sgenrand(seed) must be         */
-/* called once. (seed is any 32-bit integer except for 0).        */
-/*   Coded by Takuji Nishimura, considering the suggestions by    */
-/* Topher Cooper and Marc Rieffel in July-Aug. 1997.              */
-
-/* This library is free software; you can redistribute it and/or   */
-/* modify it under the terms of the GNU Library General Public     */
-/* License as published by the Free Software Foundation; either    */
-/* version 2 of the License, or (at your option) any later         */
-/* version.                                                        */
-/* This library is distributed in the hope that it will be useful, */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of  */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.            */
-/* See the GNU Library General Public License for more details.    */
-/* You should have received a copy of the GNU Library General      */
-/* Public License along with this library; if not, write to the    */
-/* Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   */ 
-/* 02111-1307  USA                                                 */
-
-/* Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura.       */
-/* When you use this, send an email to: matumoto@math.keio.ac.jp   */
-/* with an appropriate reference to your work.                     */
-
-/* REFERENCE                                                       */
-/* M. Matsumoto and T. Nishimura,                                  */
-/* "Mersenne Twister: A 623-Dimensionally Equidistributed Uniform  */
-/* Pseudo-Random Number Generator",                                */
-/* ACM Transactions on Modeling and Computer Simulation,           */
-/* Vol. 8, No. 1, January 1998, pp 3--30.                          */
-
-// See http://www.math.keio.ac.jp/~matumoto/emt.html
-
-// 1999-01-25 adapted to STL-like idiom
-// allan@stokes.ca (Allan Stokes) www.stokes.ca
-
-#ifndef BZ_RAND_MT
-#define BZ_RAND_MT
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#include <vector>
-
-BZ_NAMESPACE(blitz)
-
-// decomposition issues:
-//   machine representation of integer types
-//   output buffer option verses inline post-conditioning
-
-class MersenneTwister
-{
-private:
-  typedef unsigned int twist_int; // must be at least 32 bits
-                                  // larger might be faster
-  typedef vector<twist_int> State;
-  typedef State::iterator Iter;
-
-  struct BitMixer {
-    enum { K = 0x9908b0df };
-    BitMixer() : s0(0) {}
-    inline friend twist_int low_mask (twist_int s1) {
-      return (s1&1u) ? K : 0u;
-    }
-    inline twist_int high_mask (twist_int s1) const {
-      return ((s0&0x80000000)|(s1&0x7fffffff))>>1;
-    }
-    inline twist_int operator() (twist_int s1) {
-      twist_int r = high_mask(s1) ^ low_mask(s1);
-      s0 = s1;
-      return r;
-    }
-    twist_int s0;
-  };
-
-enum { N = 624, PF = 397, reference_seed = 4357 }; 
-  
-public: 
-  MersenneTwister () {} // S empty will trigger auto-seed
-
-  void seed (twist_int seed = reference_seed)
-  {
-    if (!S.size()) S.resize (N);
-    enum { Knuth_A = 69069 }; 
-    twist_int x = seed & 0xFFFFFFFF;
-    Iter s = &S[0];
-    twist_int mask = (seed == reference_seed) ? 0 : 0xFFFFFFFF;
-    for (int j = 0; j < N; ++j) {
-      // adding j here avoids the risk of all zeros 
-      // we suppress this term in "compatibility" mode  
-      *s++ = (x + (mask & j)) & 0xFFFFFFFF; 
-      x *= Knuth_A;
-    }
-  }
-
-  void reload (void)
-  {
-    if (!S.size()) seed (); // auto-seed detection
-
-    Iter p0 = &S[0];
-    Iter pM = p0 + PF;
-    BitMixer twist;
-    twist (S[0]); // prime the pump
-    for (Iter pf_end = &S[N-PF]; p0 != pf_end; ++p0, ++pM)
-      *p0 = *pM ^ twist (p0[1]);
-    pM = S.begin();
-    for (Iter s_end = &S[N-1]; p0 != s_end; ++p0, ++pM)
-      *p0 = *pM ^ twist (p0[1]);
-    *p0 = *pM ^ twist (S[0]);
-
-    I = &S[0];
-  }
-
-  inline twist_int random (void)
-  {
-    if (I >= S.end()) reload();
-    twist_int y = *I++;
-    y ^= (y >> 11);
-    y ^= (y <<  7) & 0x9D2C5680;
-    y ^= (y << 15) & 0xEFC60000;
-    y ^= (y >> 18);
-    return y;
-  }
-
-private:
-  State   S;
-  Iter    I;
-};
-
-
-// This version returns a double in the range [0,1).
-
-class MersenneTwisterDouble {
-
-public:
-  MersenneTwisterDouble()
-  {
-      // f = 1/(2^32);
-      f = (1.0 / 65536) / 65536;
-  }
-
-  void randomize(unsigned int seed)
-  {
-      gen_.seed(seed);
-  }
-
-  double random()
-  {
-      unsigned long y1 = gen_.random();
-      unsigned long y2 = gen_.random();
-
-      return ((y1 * f) * y2 * f);
-  }
-
-private:
-  MersenneTwister gen_;
-  double f;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_RAND_MT
diff --git a/weave/blitz-20001213/blitz/rand-normal.h b/weave/blitz-20001213/blitz/rand-normal.h
deleted file mode 100644
index b7bbfb3..0000000
--- a/weave/blitz-20001213/blitz/rand-normal.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/***************************************************************************
- * blitz/rand-normal.h    Random Gaussian (Normal) generator
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- *
- * This generator transforms a (0,1] uniform distribution into
- * a Normal distribution.  Let u,v be (0,1] random variables. Then
- *
- *    x = sqrt(-2 ln v) cos(pi (2u-1))
- *
- * is N(0,1) distributed.
- *
- * Reference: Athanasios Papoulis, "Probability, random variables,
- * and stochastic processes," McGraw-Hill : Toronto, 1991.
- *
- ***************************************************************************
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_RAND_NORMAL_H
-#define BZ_RAND_NORMAL_H
-
-#ifndef BZ_RANDOM_H
- #include <blitz/random.h>
-#endif
-
-#ifndef BZ_RAND_UNIFORM_H
- #include <blitz/rand-uniform.h>
-#endif
-
-#include <math.h>
-
-BZ_NAMESPACE(blitz)
-
-template<class P_uniform BZ_TEMPLATE_DEFAULT(Uniform)>
-class Normal {
-
-public:
-    typedef double T_numtype;
-
-    Normal(double mean = 0.0, double variance = 1.0, double = 0.0)
-        : mean_(mean), sigma_(::sqrt(variance))
-    { 
-    }
-
-    void randomize() 
-    { 
-        uniform_.randomize();
-    }
-  
-    double random()
-    { 
-        double u, v;
-
-        do {
-            u = uniform_.random();
-            v = uniform_.random();    
-        } while (v == 0);
-
-        return mean_ + sigma_ * ::sqrt(-2*::log(v)) * ::cos(M_PI * (2*u - 1));
-    } 
-
-private:
-    double mean_, sigma_;
-    P_uniform uniform_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_RAND_NORMAL_H
-
diff --git a/weave/blitz-20001213/blitz/rand-tt800.h b/weave/blitz-20001213/blitz/rand-tt800.h
deleted file mode 100644
index 7ef5c9b..0000000
--- a/weave/blitz-20001213/blitz/rand-tt800.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/***************************************************************************
- * blitz/rand-tt800.h      Matsumoto and Kurita's TT800 uniform random 
- *                         number generator.
- *
- * $Id$
- *
- ***************************************************************************
- *
- * The class TT800 encapsulates Makoto Matsumoto and Yoshiharu Kurita's 
- * TT800 twisted generalized feedback shift register (TGFSR) random number 
- * generator.  The generator has period 2^800 - 1.
- *
- * Contact: M. Matsumoto <matumoto@math.keio.ac.jp>
- *
- * See: M. Matsumoto and Y. Kurita, Twisted GFSR Generators II, 
- *      ACM Transactions on Modelling and Computer Simulation,
- *      Vol. 4, No. 3, 1994, pages 254-266.
- *
- * (c) 1994 Association for Computing Machinery.  
- *
- * Distributed with consent of the authors.
- *
- ***************************************************************************
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.1  1997/02/28 13:39:51  tveldhui
- * Initial revision
- *
- */
-
-#ifndef BZ_RAND_TT800_H
-#define BZ_RAND_TT800_H
-
-#ifndef BZ_RANDOM_H
- #include <blitz/random.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-class TT800 {
-
-public:
-    typedef double T_numtype;
-
-    TT800(double low = 0.0, double high = 1.0, double = 0.0)
-        : low_(low), length_(high-low)
-    { 
-        // Initial 25 seeds
-        x[0] = 0x95f24dab; x[1] = 0x0b685215; x[2] = 0xe76ccae7;
-        x[3] = 0xaf3ec239; x[4] = 0x715fad23; x[5] = 0x24a590ad;
-        x[6] = 0x69e4b5ef; x[7] = 0xbf456141; x[8] = 0x96bc1b7b;
-        x[9] = 0xa7bdf825; x[10] = 0xc1de75b7; x[11] = 0x8858a9c9;
-        x[12] = 0x2da87693; x[13] = 0xb657f9dd; x[14] = 0xffdc8a9f;
-        x[15] = 0x8121da71; x[16] = 0x8b823ecb; x[17] = 0x885d05f5;
-        x[18] = 0x4e20cd47; x[19] = 0x5a9ad5d9; x[20] = 0x512c0c03;
-        x[21] = 0xea857ccd; x[22] = 0x4cc1d30f; x[23] = 0x8891a8a1;
-        x[24] = 0xa6b7aadb;
-
-        // Magic vector 'a', don't change
-        mag01[0] = 0;
-        mag01[1] = 0x8ebfd028;
-
-        k = 0;
-
-        // f = 1/(2^32);
-
-        f = (1.0 / 65536) / 65536;
-    }
-
-    void randomize() 
-    { 
-        BZ_NOT_IMPLEMENTED();            // NEEDS_WORK
-    }
- 
-    unsigned long randomUint32()
-    {
-        if (k==N)
-            generate();
-
-        unsigned long y = x[k];
-        y ^= (y << 7) & 0x2b5b2500; /* s and b, magic vectors */
-        y ^= (y << 15) & 0xdb8b0000; /* t and c, magic vectors */
-        y &= 0xffffffff; /* you may delete this line if word size = 32 */
-
-        // the following line was added by Makoto Matsumoto in the 1996 version
-        // to improve lower bit's corellation.
-        // Delete this line to use the code published in 1994.
-
-        y ^= (y >> 16); /* added to the 1994 version */
-        k++;
-    }
- 
-    double random()
-    { 
-        unsigned long y1 = randomUint32();
-        unsigned long y2 = randomUint32();
-
-        return low_ + length_ * ((y1 * f) * y2 * f);
-    } 
-
-protected:
-    void generate()
-    {
-        /* generate N words at one time */
-        int kk;
-        for (kk=0;kk<N-M;kk++) {
-            x[kk] = x[kk+M] ^ (x[kk] >> 1) ^ mag01[x[kk] % 2];
-        }
-        for (; kk<N;kk++) {
-            x[kk] = x[kk+(M-N)] ^ (x[kk] >> 1) ^ mag01[x[kk] % 2];
-        }
-        k=0;
-    }
-
-private:
-    enum { N = 25, M = 7 };
-
-    double low_, length_;
-    double f;
-    int k;
-    unsigned long x[N];
-    unsigned long mag01[2];
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_RAND_TT800_H
-
diff --git a/weave/blitz-20001213/blitz/rand-uniform.h b/weave/blitz-20001213/blitz/rand-uniform.h
deleted file mode 100644
index 867debf..0000000
--- a/weave/blitz-20001213/blitz/rand-uniform.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/***************************************************************************
- * blitz/rand-uniform.h    Uniform class, which provides uniformly
- *                         distributed random numbers.
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- *
- * This random number generator is based on the LAPACK auxilliary
- * routine DLARAN by Jack Dongarra.  It's a multiplicative congruential 
- * generator with modulus 2^48 and multiplier 33952834046453. 
- *
- * See also: G. S. Fishman, Multiplicative congruential random number
- * generators with modulus 2^b: an exhaustive analysis for b=32 and
- * a partial analysis for b=48, Math. Comp. 189, pp 331-344, 1990.
- * 
- * This routine requires 32-bit integers.
- *
- * The generated number lies in the open interval (low,high).  i.e. low and
- * high themselves will never be generated.
- *
- ***************************************************************************
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_RAND_UNIFORM_H
-#define BZ_RAND_UNIFORM_H
-
-#ifndef BZ_RANDOM_H
- #include <blitz/random.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-class Uniform {
-
-public:
-    typedef double T_numtype;
-
-    Uniform(double low = 0.0, double high = 1.0, double = 0.0)
-        : low_(low), length_(high-low)
-    { 
-        BZPRECONDITION(sizeof(int) >= 4);   // Need 32 bit integers!
-
-        seed[0] = 24;       // All seeds in the range [0,4095]
-        seed[1] = 711;
-        seed[2] = 3;
-        seed[3] = 3721;     // The last seed must be odd
-    }
-
-    void randomize() 
-    { 
-        BZ_NOT_IMPLEMENTED();            // NEEDS_WORK
-
-        BZPOSTCONDITION(seed[3] % 2 == 1);
-    }
-  
-    // I'm trying to avoid having a compiled 
-    // portion of the library, so this is inline until I
-    // figure out a better way to do this or I change my mind.
-    // -- TV
-    // NEEDS_WORK
-    double random()
-    { 
-        BZPRECONDITION(seed[3] % 2 == 1);
-
-        int it0, it1, it2, it3;
-        it3 = seed[3] * 2549;
-        it2 = it3 / 4096;
-        it3 -= it2 << 12;
-        it2 += seed[2] * 2549 + seed[3] * 2508;
-        it1 = it2 / 4096;
-        it2 -= it1 << 12;
-        it1 += seed[1] * 2549 + seed[2] * 2508 + seed[3] * 322;
-        it0 = it1 / 4096;
-        it1 -= it0 << 12;
-        it0 += seed[0] * 2549 + seed[1] * 2508 + seed[2] * 322 + seed[3] * 494;
-        it0 %= 4096;
-        seed[0] = it0;
-        seed[1] = it1;
-        seed[2] = it2;
-        seed[3] = it3;
-      
-        const double z = 1 / 4096.;
-        return low_ + length_ * (it0 + (it1 + (it2 + it3 * z) * z) * z) * z;
-    } 
-
-    operator double() 
-    { return random(); }
-
-private:
-    double low_, length_;
-
-    int seed[4];
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_RAND_UNIFORM_H
-
diff --git a/weave/blitz-20001213/blitz/random.h b/weave/blitz-20001213/blitz/random.h
deleted file mode 100644
index ba553d6..0000000
--- a/weave/blitz-20001213/blitz/random.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/***************************************************************************
- * blitz/random.h       Random number generator wrapper class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_RANDOM_H
-#define BZ_RANDOM_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_distribution>
-class Random {
-
-public:
-    typedef P_distribution T_distribution;
-    typedef _bz_typename T_distribution::T_numtype T_numtype;
-
-    Random(double parm1=0.0, double parm2=1.0, double parm3=0.0)
-        : generator_(parm1, parm2, parm3)
-    { }
-
-    void randomize()
-    { generator_.randomize(); }
-   
-    T_numtype random()
-    { return generator_.random(); }
-
-    operator T_numtype()
-    { return generator_.random(); }
-
-protected: 
-    T_distribution generator_;
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/randref.h>
-
-#endif // BZ_RANDOM_H
-
diff --git a/weave/blitz-20001213/blitz/randref.h b/weave/blitz-20001213/blitz/randref.h
deleted file mode 100644
index 8dd0ef3..0000000
--- a/weave/blitz-20001213/blitz/randref.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/***************************************************************************
- * blitz/randref.h      Random number generators, expression templates
- *                      wrapper
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.3  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_RANDREF_H
-#define BZ_RANDREF_H
-
-#ifndef BZ_RANDOM_H
- #error <blitz/randref.h> must be included via <blitz/random.h>
-#endif // BZ_RANDOM_H
-
-BZ_NAMESPACE(blitz)
-
-template<class P_distribution>
-class _bz_VecExprRandom {
-
-public:
-    typedef _bz_typename Random<P_distribution>::T_numtype T_numtype;
-
-    _bz_VecExprRandom(Random<P_distribution>& random)
-        : random_(random)
-    { }
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    _bz_VecExprRandom(_bz_VecExprRandom<P_distribution>& x)
-        : random_(x.random_)
-    { }
-#endif
-
-    T_numtype operator[](unsigned) const
-    { return random_.random(); }
-
-    T_numtype operator()(unsigned) const
-    { return random_.random(); }
-
-    unsigned length(unsigned recommendedLength) const
-    { return recommendedLength; }
-
-    unsigned _bz_suggestLength() const
-    { return 0; }
-
-    _bz_bool _bz_hasFastAccess() const
-    { return 1; }
-
-    T_numtype _bz_fastAccess(unsigned) const
-    { return random_.random(); }
-
-private:
-    _bz_VecExprRandom() { }
-
-    Random<P_distribution>& random_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_RANDREF_H
-
diff --git a/weave/blitz-20001213/blitz/range.h b/weave/blitz-20001213/blitz/range.h
deleted file mode 100644
index 9f740d2..0000000
--- a/weave/blitz-20001213/blitz/range.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/***************************************************************************
- * blitz/range.h      Declaration of the Range class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.6  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.5  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.4  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1996/11/11 17:29:13  tveldhui
- * Initial revision
- *
- *
- */
-
-#ifndef BZ_RANGE_H
-#define BZ_RANGE_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_VECEXPRWRAP_H
- #include <blitz/vecexprwrap.h>      // _bz_VecExpr wrapper
-#endif
-
-#include <blitz/wrap-climits.h>                  // for INT_MIN
-
-BZ_NAMESPACE(blitz)
-
-// Examples: 
-// Vector<double> x(7);
-// Range::all()                    [0,1,2,3,4,5,6]
-// Range(3,5)                      [3,4,5]
-// Range(3,Range::toEnd)           [3,4,5,6]
-// Range(Range::fromStart,3)       [0,1,2,3]
-// Range(1,5,2);                   [1,3,5]
-
-enum { fromStart = INT_MIN, toEnd = INT_MIN };
-
-// Class Range
-class Range {
-
-public:
-    // This declaration not yet supported by all compilers
-    // const int fromStart = INT_MIN;
-    // const int toEnd = INT_MIN;
-
-    typedef int T_numtype;
-
-    enum { fromStart = INT_MIN, toEnd = INT_MIN };
-
-    Range()
-    {
-        first_ = fromStart;
-        last_ = toEnd;
-        stride_ = 1;
-    }
-
-    // Range(Range r): allow default copy constructor to be used
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    Range(const Range& r)
-    {
-        first_ = r.first_;
-        last_ = r.last_;
-        stride_ = r.stride_;
-    }
-#endif
-
-    _bz_explicit Range(int slicePosition)
-    {
-        first_ = slicePosition;
-        last_ = slicePosition;
-        stride_ = 1;
-    }
-
-    Range(int first, int last, int stride=1)
-        : first_(first), last_(last), stride_(stride)
-    { 
-        BZPRECHECK((first == fromStart) || (last == toEnd) ||
-                       (first < last) && (stride > 0) ||
-                       (first > last) && (stride < 0) ||
-                       (first == last), (*this) << " is an invalid range.");
-        BZPRECHECK((last-first) % stride == 0,
-            (*this) << ": the stride must evenly divide the range");
-    }
-
-    int first(int lowRange = 0) const
-    { 
-        if (first_ == fromStart)
-            return lowRange;
-        return first_; 
-    }
-
-    int last(int highRange = 0) const
-    {
-        if (last_ == toEnd)
-            return highRange;
-        return last_;
-    }
-
-    unsigned length(int recommendedLength = 0) const
-    {
-        BZPRECONDITION(first_ != fromStart);
-        BZPRECONDITION(last_ != toEnd);
-        BZPRECONDITION((last_ - first_) % stride_ == 0);
-        return (last_ - first_) / stride_ + 1;
-    }
-
-    int stride() const
-    { return stride_; }
-
-    _bz_bool isAscendingContiguous() const
-    {
-        return (first_ <= last_) && (stride_ == 1);
-    }
-
-    void setRange(int first, int last, int stride=1)
-    {
-        BZPRECONDITION((first < last) && (stride > 0) ||
-                       (first > last) && (stride < 0) ||
-                       (first == last));
-        BZPRECONDITION((last-first) % stride == 0);
-        first_ = first;
-        last_ = last;
-        stride_ = stride;
-    }
-
-    static Range all() 
-    { return Range(fromStart,toEnd,1); }
-
-    bool isUnitStride() const
-    { return stride_ == 1; }
-
-    // Operators
-    Range operator-(int shift) const
-    { 
-        BZPRECONDITION(first_ != fromStart);
-        BZPRECONDITION(last_ != toEnd);
-        return Range(first_ - shift, last_ - shift, stride_); 
-    }
-
-    Range operator+(int shift) const
-    { 
-        BZPRECONDITION(first_ != fromStart);
-        BZPRECONDITION(last_ != toEnd);
-        return Range(first_ + shift, last_ + shift, stride_); 
-    }
-
-    int operator[](unsigned i) const
-    {
-        return first_ + i * stride_;
-    }
-
-    int operator()(unsigned i) const
-    {
-        return first_ + i * stride_;
-    }
-
-    friend inline ostream& operator<<(ostream& os, const Range& range)
-    {
-        os << "Range(" << range.first() << "," << range.last() << ","
-           << range.stride() << ")";
-
-        return os;
-    }
-
-    /////////////////////////////////////////////
-    // Library-internal member functions
-    // These are undocumented and may change or
-    // disappear in future releases.
-    /////////////////////////////////////////////
-
-    enum { _bz_staticLengthCount = 0,
-           _bz_dynamicLengthCount = 0,
-           _bz_staticLength = 0 };
-
-    _bz_bool _bz_hasFastAccess() const
-    { return stride_ == 1; }
-
-    T_numtype _bz_fastAccess(unsigned i) const
-    { return first_ + i; }
-
-    unsigned _bz_suggestLength() const
-    { 
-        return length();
-    }
-
-    _bz_VecExpr<Range> _bz_asVecExpr() const
-    { return _bz_VecExpr<Range>(*this); }
-
-private:
-    int first_, last_, stride_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_RANGE_H
diff --git a/weave/blitz-20001213/blitz/reduce.h b/weave/blitz-20001213/blitz/reduce.h
deleted file mode 100644
index 1a26213..0000000
--- a/weave/blitz-20001213/blitz/reduce.h
+++ /dev/null
@@ -1,809 +0,0 @@
-/***************************************************************************
- * blitz/reduce.h        Reduction operators: sum, mean, min, max,
- *                       minIndex, maxIndex, product, count, any, all
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_REDUCE_H
-#define BZ_REDUCE_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_NUMTRAIT_H
- #include <blitz/numtrait.h>
-#endif
-
-#ifndef BZ_NUMINQUIRE_H
- #include <blitz/numinquire.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_sourcetype, class P_resulttype = BZ_SUMTYPE(P_sourcetype)>
-class ReduceSum {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef P_resulttype T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 0, canProvideInitialValue = 1 };
-
-    ReduceSum()
-    { reset(); }
-
-    ReduceSum(T_resulttype initialValue)
-    { sum_ = initialValue; }
-
-    bool operator()(T_sourcetype x)
-    { 
-        sum_ += x; 
-        return true;
-    }
-
-    bool operator()(T_sourcetype x, int)
-    { 
-        sum_ += x; 
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return sum_; }
-
-    void reset()
-    { sum_ = zero(T_resulttype()); }
-
-    void reset(T_resulttype initialValue)
-    { sum_ = initialValue; }
- 
-    static const char* name()
-    { return "sum"; }
- 
-protected:
-    T_resulttype sum_;
-};
-
-template<class P_sourcetype, class P_resulttype = BZ_FLOATTYPE(P_sourcetype)>
-class ReduceMean {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef P_resulttype T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 0, canProvideInitialValue = 0 };
-
-    ReduceMean()
-    { reset(); }
-
-    ReduceMean(T_resulttype)
-    { 
-        BZPRECHECK(0, "Provided an initial value for ReduceMean");
-        reset();
-    }
-
-    bool operator()(T_sourcetype x)
-    { 
-        sum_ += x; 
-        return true;
-    }
-
-    bool operator()(T_sourcetype x, int)
-    { 
-        sum_ += x; 
-        return true;
-    }
-
-    T_resulttype result(int count)
-    { return sum_ / count; }
-
-    void reset()
-    { sum_ = zero(T_resulttype()); }
-
-    void reset(T_resulttype)
-    { 
-        BZPRECHECK(0, "Provided an initial value for ReduceMean");
-        reset();
-    }
-
-    static const char* name() 
-    { return "mean"; }
-
-protected:
-    T_resulttype sum_;
-};
-
-template<class P_sourcetype>
-class ReduceMin {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef P_sourcetype T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 0, canProvideInitialValue = 1 };
-
-    ReduceMin()
-    { reset(); }
-
-    ReduceMin(T_resulttype min)
-    {
-        min_ = min;
-    }
-
-    bool operator()(T_sourcetype x)
-    { 
-        if (x < min_)
-            min_ = x;
-        return true;
-    }
-
-    bool operator()(T_sourcetype x, int)
-    {
-        if (x < min_)
-            min_ = x;
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return min_; }
-
-    void reset()
-    { min_ = huge(P_sourcetype()); }
-
-    void reset(T_resulttype initialValue)
-    { min_ = initialValue; }
-
-    static const char* name()
-    { return "min"; }
-
-protected:
-    T_resulttype min_;
-};
-
-template<class P_sourcetype>
-class ReduceMax {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef P_sourcetype T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 0, canProvideInitialValue = 1 };
-
-    ReduceMax()
-    { reset(); }
-
-    ReduceMax(T_resulttype max)
-    {
-        max_ = max;
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        if (x > max_)
-            max_ = x;
-        return true;
-    }
-
-    bool operator()(T_sourcetype x, int)
-    {
-        if (x > max_)
-            max_ = x;
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return max_; }
-
-    void reset()
-    { max_ = neghuge(P_sourcetype()); }
-
-    void reset(T_resulttype initialValue)
-    { max_ = initialValue; }
-
-    static const char* name()
-    { return "max"; }
-
-protected:
-    T_resulttype max_;
-};
-
-template<class P_sourcetype>
-class ReduceMinIndex {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef int          T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 1, canProvideInitialValue = 0 };
-
-    ReduceMinIndex()
-    { reset(); }
-
-    ReduceMinIndex(T_resulttype min)
-    {
-        reset(min);
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        BZPRECONDITION(0);
-        return false;
-    }
-
-    bool operator()(T_sourcetype x, int index)
-    {
-        if (x < min_)
-        {
-            min_ = x;
-            index_ = index;
-        }
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return index_; }
-
-    void reset()
-    { 
-        min_ = huge(T_sourcetype());
-        index_ = tiny(int());        
-    }
-
-    void reset(T_resulttype)
-    { 
-        BZPRECHECK(0, "Provided initial value for ReduceMinIndex");
-        reset();
-    }
-
-    static const char* name()
-    { return "minIndex"; }
-
-protected:
-    T_sourcetype min_;
-    int index_;
-};
-
-template<class P_sourcetype, int N>
-class ReduceMinIndexVector {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef TinyVector<int,N> T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { canProvideInitialValue = 0 };
-
-    ReduceMinIndexVector()
-    { reset(); }
-
-    ReduceMinIndexVector(T_resulttype min)
-    {
-        reset(min);
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        BZPRECONDITION(0);
-        return false;
-    }
-
-    bool operator()(T_sourcetype, int)
-    {
-        BZPRECONDITION(0);
-        return false;
-    }
-   
-    bool operator()(T_sourcetype x, const TinyVector<int,N>& index)
-    {
-        if (x < min_)
-        {
-            min_ = x;
-            index_ = index;
-        }
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return index_; }
-
-    void reset()
-    {
-        min_ = huge(T_sourcetype());
-        index_ = tiny(int());
-    }
-
-    void reset(T_resulttype)
-    {
-        BZPRECHECK(0, "Provided initial value for ReduceMinIndex");
-        reset();
-    }
-
-    static const char* name()
-    { return "minIndex"; }
-
-protected:
-    T_sourcetype min_;
-    TinyVector<int,N> index_;
-};
-
-template<class P_sourcetype>
-class ReduceMaxIndex {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef int          T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 1, canProvideInitialValue = 0 };
-
-    ReduceMaxIndex()
-    { reset(); }
-
-    ReduceMaxIndex(T_resulttype max)
-    {
-        reset(max);
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        BZPRECONDITION(0);
-        return false;
-    }
-
-    bool operator()(T_sourcetype x, int index)
-    {
-        if (x > max_)
-        {
-            max_ = x;
-            index_ = index;
-        }
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return index_; }
-
-    void reset()
-    {
-        max_ = neghuge(T_sourcetype());
-        index_ = tiny(int());
-    }
-
-    void reset(T_resulttype)
-    {
-        BZPRECHECK(0, "Provided initial value for ReduceMaxIndex");
-        reset();
-    }
-
-    static const char* name()
-    { return "maxIndex"; }
-
-protected:
-    T_sourcetype max_;
-    int index_;
-};
-
-template<class P_sourcetype, int N_rank>
-class ReduceMaxIndexVector {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef TinyVector<int,N_rank> T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { canProvideInitialValue = 0 };
-
-    ReduceMaxIndexVector()
-    { reset(); }
-
-    ReduceMaxIndexVector(T_resulttype max)
-    {
-        reset(max);
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        BZPRECONDITION(0);
-        return false;
-    }
-
-    bool operator()(T_sourcetype x, const TinyVector<int,N_rank>& index)
-    {
-        if (x > max_)
-        {
-            max_ = x;
-            index_ = index;
-        }
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return index_; }
-
-    void reset()
-    {
-        max_ = neghuge(T_sourcetype());
-        index_ = tiny(int());
-    }
-
-    void reset(T_resulttype)
-    {
-        BZPRECHECK(0, "Provided initial value for ReduceMaxIndex");
-        reset();
-    }
-
-    static const char* name()
-    { return "maxIndex"; }
-
-protected:
-    T_sourcetype max_;
-    TinyVector<int,N_rank> index_;
-};
-
-template<class P_sourcetype>
-class ReduceFirst {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef int          T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 1, canProvideInitialValue = 0 };
-
-    ReduceFirst()
-    { reset(); }
-
-    ReduceFirst(T_resulttype)
-    {
-        BZPRECONDITION(0);
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        BZPRECONDITION(0);
-        return false;
-    }
-
-    bool operator()(T_sourcetype x, int index)
-    {
-        if (x)
-        {
-            index_ = index;
-            return false;
-        }
-        else
-            return true;
-    }
-
-    T_resulttype result(int)
-    { return index_; }
-
-    void reset()
-    {
-        index_ = tiny(int());
-    }
-
-    void reset(T_resulttype)
-    {
-        BZPRECHECK(0, "Provided initial value for ReduceFirst");
-        reset();
-    }
-
-    static const char* name()
-    { return "first"; }
-
-protected:
-    int index_;
-};
-
-template<class P_sourcetype>
-class ReduceLast {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef int          T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 1, canProvideInitialValue = 0 };
-
-    ReduceLast()
-    { reset(); }
-
-    ReduceLast(T_resulttype)
-    {
-        BZPRECONDITION(0);
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        BZPRECONDITION(0);
-        return false;
-    }
-
-    bool operator()(T_sourcetype x, int index)
-    {
-        if (x)
-        {
-            index_ = index;
-            return true;
-        }
-        else
-            return true;
-    }
-
-    T_resulttype result(int)
-    { return index_; }
-
-    void reset()
-    {
-        index_ = huge(int());
-    }
-
-    void reset(T_resulttype)
-    {
-        BZPRECHECK(0, "Provided initial value for ReduceFirst");
-        reset();
-    }
-
-    static const char* name()
-    { return "last"; }
-
-protected:
-    int index_;
-};
-
-template<class P_sourcetype, class P_resulttype = BZ_SUMTYPE(P_sourcetype)>
-class ReduceProduct {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef P_resulttype T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 0, canProvideInitialValue = 1 };
-
-    ReduceProduct()
-    { product_ = one(T_resulttype()); }
-
-    ReduceProduct(T_resulttype initialValue)
-    { product_ = initialValue; }
-
-    bool operator()(T_sourcetype x)
-    { 
-        product_ *= x; 
-        return true;
-    }
-
-    bool operator()(T_sourcetype x, int)
-    { 
-        product_ *= x; 
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return product_; }
-
-    void reset()
-    { product_ = one(T_resulttype()); }
-
-    void reset(T_resulttype initialValue)
-    { product_ = initialValue; }
-
-    static const char* name()
-    { return "product"; }
-
-protected:
-    T_resulttype product_;
-};
-
-template<class P_sourcetype>
-class ReduceCount {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef int          T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 0, canProvideInitialValue = 1 };
-
-    ReduceCount()
-    { reset(); }
-
-    ReduceCount(T_resulttype count)
-    {
-        count_ = count;
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        if (x)
-            ++count_;
-        return true;
-    }
-
-    bool operator()(T_sourcetype x, int)
-    {
-        if (x)
-            ++count_;
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return count_; }
-
-    void reset()
-    { count_ = zero(T_resulttype()); }
-
-    void reset(T_resulttype initialValue)
-    { count_ = initialValue; }
-
-    static const char* name()
-    { return "count"; }
-
-protected:
-    T_resulttype count_;
-};
-
-template<class P_sourcetype>
-class ReduceAny {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef _bz_bool     T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 0, canProvideInitialValue = 0 };
-
-    ReduceAny()
-    { reset(); }
-
-    ReduceAny(T_resulttype initialValue)
-    {
-        reset(initialValue);
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        if (x)
-        {
-            any_ = _bz_true;
-            return false;
-        }
-
-        return true;
-    }
-
-    bool operator()(T_sourcetype x, int)
-    {
-        if (x)
-        {
-            any_ = _bz_true;
-            return false;
-        }
-
-        return true;
-    }
-
-    T_resulttype result(int)
-    { return any_; }
-
-    void reset()
-    { any_ = _bz_false; }
-
-    void reset(T_resulttype)
-    { 
-        BZPRECHECK(0, "Provided initial value for ReduceAny");
-        reset();
-    }
-
-    static const char* name()
-    { return "any"; }
-
-protected:
-    T_resulttype any_;
-};
-
-template<class P_sourcetype>
-class ReduceAll {
-
-public:
-    typedef P_sourcetype T_sourcetype;
-    typedef _bz_bool     T_resulttype;
-    typedef T_resulttype T_numtype;
-
-    enum { needIndex = 0, canProvideInitialValue = 0 };
-
-    ReduceAll()
-    { reset(); }
-
-    ReduceAll(T_resulttype initialValue)
-    {
-        reset(initialValue);
-    }
-
-    bool operator()(T_sourcetype x)
-    {
-        if (!_bz_bool(x))
-        {
-            all_ = _bz_false;
-            return false;
-        }
-        else
-            return true;
-    }
-
-    bool operator()(T_sourcetype x, int)
-    {
-        if (!_bz_bool(x))
-        {
-            all_ = _bz_false;
-            return false;
-        }
-        else
-            return true;
-    }
-
-    T_resulttype result(int)
-    { return all_; }
-
-    void reset()
-    { all_ = _bz_true; }
-
-    void reset(T_resulttype)
-    {
-        BZPRECHECK(0, "Provided initial value for ReduceAll");
-        reset();
-    }
-
-    static const char* name()
-    { return "all"; }
-
-protected:
-    T_resulttype all_;
-}; 
-
-BZ_NAMESPACE_END
-
-#endif // BZ_REDUCE_H
diff --git a/weave/blitz-20001213/blitz/shapecheck.h b/weave/blitz-20001213/blitz/shapecheck.h
deleted file mode 100644
index b30377c..0000000
--- a/weave/blitz-20001213/blitz/shapecheck.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/***************************************************************************
- * blitz/shapecheck.h    Functions for checking conformability of arrays
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.1  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- */
-
-#ifndef BZ_SHAPECHECK_H
-#define BZ_SHAPECHECK_H
-
-BZ_NAMESPACE(blitz)
-
-/*
- * The function areShapesConformable(A,B) checks that the shapes 
- * A and B are conformable (i.e. the same size/geometry).  Typically 
- * the A and B parameters are of type TinyVector<int,N_rank> and represent 
- * the extent of the arrays.  It's possible that in the future jagged-edged
- * arrays will be supported, in which case shapes may be lists
- * of subdomains.
- */
-
-template<class T_shape1, class T_shape2>
-inline _bz_bool areShapesConformable(const T_shape1&, const T_shape2&)
-{
-    // If the shape objects are different types, this means
-    // that the arrays are different ranks, or one is jagged
-    // edged, etc.  In this case the two arrays are not
-    // conformable.
-    return _bz_false;
-}
-
-template<class T_shape>
-inline _bz_bool areShapesConformable(const T_shape& a, const T_shape& b)
-{
-    // The shape objects are the same type, so compare them.
-
-    // NEEDS_WORK-- once the "all" reduction is implemented, should
-    // use it.
-    // return all(a == b);
-
-    for (unsigned i=0; i < a.length(); ++i)
-    {
-        if (a[i] != b[i])
-        {
-            BZ_DEBUG_MESSAGE("Incompatible shapes detected: " << endl 
-                 << a << endl << b << endl);
-            return _bz_false;
-        }
-    }
-
-    return _bz_true;
-}
-
-BZ_NAMESPACE_END
-
-#endif
diff --git a/weave/blitz-20001213/blitz/tau.h b/weave/blitz-20001213/blitz/tau.h
deleted file mode 100644
index f6e865e..0000000
--- a/weave/blitz-20001213/blitz/tau.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/***************************************************************************
- * blitz/tau.h       Integration with the Tau profiling package.
- *                   See http://www.acl.lanl.gov/tau/
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- */
-
-#ifndef BZ_TAU_H
-#define BZ_TAU_H
-
-#ifdef BZ_TAU_PROFILING
- #define TAU_BLITZ  TAU_USER1
- #include <Profile/Profiler.h>
-
-#else
- #define TYPE_STRING(profileString, str)
- #define PROFILED_BLOCK(name, type)
- #define TAU_TYPE_STRING(profileString, str)
- #define TAU_PROFILE(name, type, group)
- #define TAU_PROFILE_TIMER(var, name, type, group)
- #define TAU_PROFILE_START(var)
- #define TAU_PROFILE_STOP(var)
- #define TAU_PROFILE_STMT(stmt)
- #define TAU_PROFILE_EXIT(msg)
- #define TAU_PROFILE_INIT(argc, argv)
- #define TAU_PROFILE_SET_NODE(node)
- #define CT(obj)
-#endif // ! BZ_TAU_PROFILING
-
-#endif // BZ_TAU_H
diff --git a/weave/blitz-20001213/blitz/timer.h b/weave/blitz-20001213/blitz/timer.h
deleted file mode 100644
index a5fe49c..0000000
--- a/weave/blitz-20001213/blitz/timer.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/***************************************************************************
- * blitz/Timer.h        Timer class, for use in benchmarking
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-// This class is not portable to non System V platforms.
-// It will need to be rewritten for Windows, NT, Mac.
-// NEEDS_WORK
-
-#ifndef BZ_TIMER_H
-#define BZ_TIMER_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifdef BZ_HAVE_RUSAGE
- #include <sys/resource.h>
-#else
- #include <time.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-class Timer {
-
-public:
-    Timer() 
-    { 
-        state_ = uninitialized;
-    }
-
-    void start()
-    { 
-        state_ = running;
-        t1_ = systemTime();
-    }
-
-    void stop()
-    {
-        t2_ = systemTime();
-        BZPRECONDITION(state_ == running);
-        state_ = stopped;
-    }
-
-    long double elapsedSeconds()
-    {
-        BZPRECONDITION(state_ == stopped);
-        return t2_ - t1_;
-    }
-
-private:
-    Timer(Timer&) { }
-    void operator=(Timer&) { }
-
-    long double systemTime()
-    {
-#ifdef BZ_HAVE_RUSAGE
-        getrusage(RUSAGE_SELF, &resourceUsage_);
-        double seconds = resourceUsage_.ru_utime.tv_sec 
-            + resourceUsage_.ru_stime.tv_sec;
-        double micros  = resourceUsage_.ru_utime.tv_usec 
-            + resourceUsage_.ru_stime.tv_usec;
-        return seconds + micros/1.0e6;
-#else
-        return clock() / (long double) CLOCKS_PER_SEC;
-#endif
-    }
-
-    enum { uninitialized, running, stopped } state_;
-
-#ifdef BZ_HAVE_RUSAGE
-    struct rusage resourceUsage_;
-#endif
-
-    long double t1_, t2_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_TIMER_H
-
diff --git a/weave/blitz-20001213/blitz/tiny.h b/weave/blitz-20001213/blitz/tiny.h
deleted file mode 100644
index 978783a..0000000
--- a/weave/blitz-20001213/blitz/tiny.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/***************************************************************************
- * blitz/tiny.h          Tiny base class; now defunct; delete?
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-
-#ifndef BZ_TINY_H
-#define BZ_TINY_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-class _bz_tinyBase {
-};
-
-BZ_NAMESPACE_END
-
-#endif
-
diff --git a/weave/blitz-20001213/blitz/tinymat.h b/weave/blitz-20001213/blitz/tinymat.h
deleted file mode 100644
index 3f984ab..0000000
--- a/weave/blitz-20001213/blitz/tinymat.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/***************************************************************************
- * blitz/tinymat.h       Declaration of TinyMatrix<T, N, M>
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_TINYMAT_H
-#define BZ_TINYMAT_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_TINYVEC_H
- #include <blitz/tinyvec.h>
-#endif
-
-#ifndef BZ_LISTINIT_H
- #include <blitz/listinit.h>
-#endif
-
-#include <blitz/tinymatexpr.h>
-#include <blitz/meta/matassign.h>
-
-BZ_NAMESPACE(blitz)
-
-// Forward declarations
-template<class T_expr>
-class _bz_tinyMatExpr;
-
-template<class T_numtype, int N_rows, int N_columns, int N_rowStride,
-    int N_colStride>
-class _bz_tinyMatrixRef {
-
-public:
-    _bz_tinyMatrixRef(T_numtype* _bz_restrict const data)
-        : data_(data)
-    { }
-
-    T_numtype * _bz_restrict data()
-    { return (T_numtype * _bz_restrict)data_; }
-
-    T_numtype& _bz_restrict operator()(int i, int j)
-    { return data_[i * N_rowStride + j * N_colStride]; }
-
-    T_numtype operator()(int i, int j) const
-    { return data_[i * N_rowStride + j * N_colStride]; }
-
-protected:
-    T_numtype * _bz_restrict const data_;
-};
-
-template<class P_numtype, int N_rows, int N_columns>
-class TinyMatrix {
-
-public:
-    typedef P_numtype T_numtype;
-    typedef _bz_tinyMatrixRef<T_numtype, N_rows, N_columns, N_columns, 1> 
-        T_reference;
-    typedef TinyMatrix<T_numtype, N_rows, N_columns> T_matrix;
-
-    TinyMatrix() { }
-
-    T_numtype* _bz_restrict data()
-    { return data_; }
-
-    const T_numtype* _bz_restrict data() const
-    { return data_; }
-
-    T_numtype* _bz_restrict dataFirst()
-    { return data_; }
-
-    const T_numtype* _bz_restrict dataFirst() const
-    { return data_; }
-
-    // NEEDS_WORK -- precondition checks
-    T_numtype& _bz_restrict operator()(int i, int j)
-    { return data_[i*N_columns + j]; }
-
-    T_numtype operator()(int i, int j) const
-    { return data_[i*N_columns + j]; }
-
-    T_reference getRef()
-    { return T_reference((T_numtype*)data_); }
-
-    const T_reference getRef() const
-    { return T_reference((T_numtype*)data_); }
-
-    // Scalar operand
-    ListInitializationSwitch<T_matrix>
-    operator=(T_numtype x)
-    {
-        return ListInitializationSwitch<T_matrix>(*this, x);
-    }
-
-    template<class T_expr>
-    TinyMatrix<T_numtype, N_rows, N_columns>&
-    operator=(_bz_tinyMatExpr<T_expr> expr)
-    {
-        _bz_meta_matAssign<N_rows, N_columns, 0>::f(*this, expr,
-            _bz_update<T_numtype, _bz_typename T_expr::T_numtype>());
-        return *this;
-    }
-
-    void initialize(T_numtype x)
-    { 
-        for (int i=0; i < N_rows; ++i)
-          for (int j=0; j < N_columns; ++j)
-            (*this)(i,j) = x;
-    }
-
-    T_numtype* _bz_restrict getInitializationIterator()
-    { return dataFirst(); }
-
-protected:
-    T_numtype data_[N_rows * N_columns];
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/meta/matvec.h>     // Matrix-vector product metaprogram
-#include <blitz/meta/matmat.h>     // Matrix-matrix products
-
-#endif // BZ_TINYMAT_H
-
diff --git a/weave/blitz-20001213/blitz/tinymatexpr.h b/weave/blitz-20001213/blitz/tinymatexpr.h
deleted file mode 100644
index 7ea00e7..0000000
--- a/weave/blitz-20001213/blitz/tinymatexpr.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/***************************************************************************
- * blitz/tinymatexpr.h   Tiny Matrix Expressions
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_TINYMATEXPR_H
-#define BZ_TINYMATEXPR_H
-
-#ifndef BZ_TINYMAT_H
- #error <blitz/tinymatexpr.h> must be included via <blitz/tinymat.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class T_expr>
-class _bz_tinyMatExpr {
-public:
-    typedef _bz_typename T_expr::T_numtype T_numtype;
-
-    enum {
-        rows = T_expr::rows,
-        columns = T_expr::columns
-    };
-
-    _bz_tinyMatExpr(T_expr expr)
-        : expr_(expr)
-    { }
-
-    _bz_tinyMatExpr(const _bz_tinyMatExpr<T_expr>& x)
-        : expr_(x.expr_)
-    { }
-
-    T_numtype operator()(int i, int j) const
-    { return expr_(i,j); }
-
-protected:
-    T_expr expr_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_TINYMATEXPR_H
-
diff --git a/weave/blitz-20001213/blitz/tinyvec.cc b/weave/blitz-20001213/blitz/tinyvec.cc
deleted file mode 100644
index 5d7791f..0000000
--- a/weave/blitz-20001213/blitz/tinyvec.cc
+++ /dev/null
@@ -1,661 +0,0 @@
-#ifndef BZ_TINYVEC_CC
-#define BZ_TINYVEC_CC
-
-#ifndef BZ_TINYVEC_H
- #include <blitz/tinyvec.h>
-#endif
-
-#ifndef BZ_VECTOR_H
- #include <blitz/vector.h>
-#endif
-
-#ifndef BZ_VECPICK_H
- #include <blitz/vecpick.h>
-#endif
-
-#ifndef BZ_RANGE_H
- #include <blitz/range.h>
-#endif
-
-#include <blitz/meta/vecassign.h>
-
-BZ_NAMESPACE(blitz)
-
-template<class T_numtype, int N_length>
-inline TinyVector<T_numtype, N_length>::TinyVector(T_numtype initValue)
-{
-    for (int i=0; i < N_length; ++i)
-        data_[i] = initValue;
-}
-
-template<class T_numtype, int N_length>
-inline TinyVector<T_numtype, N_length>::TinyVector(const 
-    TinyVector<T_numtype, N_length>& x)
-{
-    for (int i=0; i < N_length; ++i)
-        data_[i] = x.data_[i];
-}
-
-template<class T_numtype, int N_length> template<class P_expr, class P_updater>
-inline
-void TinyVector<T_numtype, N_length>::_bz_assign(P_expr expr, P_updater up)
-{
-    BZPRECHECK(expr.length(N_length) == N_length,
-        "An expression with length " << expr.length(N_length)
-        << " was assigned to a TinyVector<"
-        << BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(T_numtype)
-        << "," << N_length << ">");
-
-    if (expr._bz_hasFastAccess())
-    {
-        _bz_meta_vecAssign<N_length, 0>::fastAssign(*this, expr, up);
-    }
-    else {
-        _bz_meta_vecAssign<N_length, 0>::assign(*this, expr, up);
-    }
-}
-
-// Constructor added by Peter Nordlund (peter.nordlund@ind.af.se)
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>::TinyVector(_bz_VecExpr<P_expr> expr) 
-{
-  _bz_assign(expr, _bz_update<P_numtype, _bz_typename P_expr::T_numtype>());
-}
-
-/*****************************************************************************
- * Assignment operators with vector expression operand
- */
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>& 
-TinyVector<P_numtype, N_length>::operator=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_update<P_numtype, _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator+=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_plus_update<P_numtype, 
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator-=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_minus_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator*=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_multiply_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator/=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_divide_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator%=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_mod_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator^=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_xor_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator&=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_bitand_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator|=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_bitor_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator<<=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_shiftl_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_expr>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator>>=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_shiftr_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with scalar operand
- */
-
-template<class P_numtype, int N_length> 
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::initialize(P_numtype x)
-{
-#ifndef BZ_KCC_COPY_PROPAGATION_KLUDGE
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) = _bz_VecExpr<T_expr>(T_expr(x));
-#else
-    // Avoid using the copy propagation kludge for this simple
-    // operation.
-    for (int i=0; i < N_length; ++i)
-        data_[i] = x;
-#endif
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator+=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) += _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator-=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) -= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator*=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) *= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator/=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) /= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator%=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) %= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator^=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) ^= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator&=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) &= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator|=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) |= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator<<=(int x)
-{
-    typedef _bz_VecExprConstant<int> T_expr;
-    (*this) <<= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator>>=(int x)
-{
-    typedef _bz_VecExprConstant<int> T_expr;
-    (*this) >>= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with TinyVector operand
- */
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator=(const 
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) = _bz_VecExpr<_bz_typename 
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator+=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) += _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator-=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) -= _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator*=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) *= _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator/=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) /= _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator%=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) %= _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator^=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) ^= _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator&=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) &= _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator|=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) |= _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator<<=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) <<= _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator>>=(const
-    TinyVector<P_numtype2, N_length>& x)
-{
-    (*this) >>= _bz_VecExpr<_bz_typename
-        TinyVector<P_numtype2, N_length>::T_constIterator>(x.begin());
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with Vector operand
- */
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator=(const Vector<P_numtype2>& x)
-{
-    (*this) = x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator+=(const Vector<P_numtype2>& x)
-{
-    (*this) += x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator-=(const Vector<P_numtype2>& x)
-{
-    (*this) -= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator*=(const Vector<P_numtype2>& x)
-{
-    (*this) *= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator/=(const Vector<P_numtype2>& x)
-{
-    (*this) /= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator%=(const Vector<P_numtype2>& x)
-{
-    (*this) %= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator^=(const Vector<P_numtype2>& x)
-{
-    (*this) ^= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator&=(const Vector<P_numtype2>& x)
-{
-    (*this) &= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator|=(const Vector<P_numtype2>& x)
-{
-    (*this) |= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator<<=(const Vector<P_numtype2>& x)
-{
-    (*this) <<= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator>>=(const Vector<P_numtype2>& x)
-{
-    (*this) >>= x._bz_asVecExpr();
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with Range operand
- */
-
-template<class P_numtype, int N_length> 
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator=(Range r)
-{
-    (*this) = r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator+=(Range r)
-{
-    (*this) += r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator-=(Range r)
-{
-    (*this) -= r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator*=(Range r)
-{
-    (*this) *= r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator/=(Range r)
-{
-    (*this) /= r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator%=(Range r)
-{
-    (*this) %= r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator^=(Range r)
-{
-    (*this) ^= r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator&=(Range r)
-{
-    (*this) &= r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator|=(Range r)
-{
-    (*this) |= r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator<<=(Range r)
-{
-    (*this) <<= r._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator>>=(Range r)
-{
-    (*this) >>= r._bz_asVecExpr();
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with VectorPick operand
- */
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator=(const VectorPick<P_numtype2>& x)
-{
-    (*this) = x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator+=(const VectorPick<P_numtype2>& x)
-{
-    (*this) += x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator-=(const VectorPick<P_numtype2>& x)
-{
-    (*this) -= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator*=(const VectorPick<P_numtype2>& x)
-{
-    (*this) *= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator/=(const VectorPick<P_numtype2>& x)
-{
-    (*this) /= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator%=(const VectorPick<P_numtype2>& x)
-{
-    (*this) %= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator^=(const VectorPick<P_numtype2>& x)
-{
-    (*this) ^= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator&=(const VectorPick<P_numtype2>& x)
-{
-    (*this) &= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator|=(const VectorPick<P_numtype2>& x)
-{
-    (*this) |= x._bz_asVecExpr();
-    return *this;
-}
-
-template<class P_numtype, int N_length> template<class P_numtype2>
-inline TinyVector<P_numtype, N_length>&
-TinyVector<P_numtype, N_length>::operator>>=(const VectorPick<P_numtype2>& x)
-{
-    (*this) <<= x._bz_asVecExpr();
-    return *this;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_TINYVEC_CC
diff --git a/weave/blitz-20001213/blitz/tinyvec.h b/weave/blitz-20001213/blitz/tinyvec.h
deleted file mode 100644
index 532dacc..0000000
--- a/weave/blitz-20001213/blitz/tinyvec.h
+++ /dev/null
@@ -1,456 +0,0 @@
-/***************************************************************************
- * blitz/tinyvec.h      Declaration of the TinyVector<T, N> class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_TINYVEC_H
-#define BZ_TINYVEC_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_RANGE_H
- #include <blitz/range.h>
-#endif
-
-#ifndef BZ_LISTINIT_H
- #include <blitz/listinit.h>
-#endif
-
-#include <blitz/tiny.h>
-
-BZ_NAMESPACE(blitz)
-
-/*****************************************************************************
- * Forward declarations
- */
-
-template<class P_numtype, int N_length, int N_stride BZ_TEMPLATE_DEFAULT(1) >
-class TinyVectorIter;
-
-template<class P_numtype, int N_length, int N_stride BZ_TEMPLATE_DEFAULT(1) >
-class TinyVectorIterConst;
-
-template<class P_numtype>
-class Vector;
-
-template<class P_expr>
-class _bz_VecExpr;
-
-template<class P_distribution>
-class Random;
-
-template<class P_numtype>
-class VectorPick;
-
-template<class T_numtype1, class T_numtype2, int N_rows, int N_columns,
-    int N_vecStride>
-class _bz_matrixVectorProduct;
-
-
-
-/*****************************************************************************
- * Declaration of class TinyVector
- */
-
-template<class P_numtype, int N_length>
-class TinyVector {
-
-public:
-    //////////////////////////////////////////////
-    // Public Types
-    //////////////////////////////////////////////
-
-    typedef P_numtype                                    T_numtype;
-    typedef TinyVector<T_numtype,N_length>               T_vector;
-    typedef TinyVectorIter<T_numtype,N_length,1>         T_iterator;
-    typedef TinyVectorIterConst<T_numtype,N_length,1>    T_constIterator;
-    typedef T_iterator iterator;
-    typedef T_constIterator const_iterator;
-    enum { numElements = N_length };
-
-    TinyVector()
-    { }
-
-    ~TinyVector() 
-    { }
-
-    inline TinyVector(const TinyVector<P_numtype,N_length>& x);
-
-    inline TinyVector(T_numtype initValue);
-
-    TinyVector(T_numtype x0, T_numtype x1)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-    }
-
-    TinyVector(T_numtype x0, T_numtype x1, T_numtype x2)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-        data_[2] = x2;
-    }
-
-    TinyVector(T_numtype x0, T_numtype x1, T_numtype x2,
-        T_numtype x3)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-        data_[2] = x2;
-        data_[3] = x3;
-    }
-
-    TinyVector(T_numtype x0, T_numtype x1, T_numtype x2,
-        T_numtype x3, T_numtype x4)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-        data_[2] = x2;
-        data_[3] = x3;
-        data_[4] = x4;
-    }
-
-    TinyVector(T_numtype x0, T_numtype x1, T_numtype x2,
-        T_numtype x3, T_numtype x4, T_numtype x5)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-        data_[2] = x2;
-        data_[3] = x3;
-        data_[4] = x4;
-        data_[5] = x5;
-    }
-
-    TinyVector(T_numtype x0, T_numtype x1, T_numtype x2,
-        T_numtype x3, T_numtype x4, T_numtype x5, T_numtype x6)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-        data_[2] = x2;
-        data_[3] = x3;
-        data_[4] = x4;
-        data_[5] = x5;
-        data_[6] = x6;
-    }
-
-    TinyVector(T_numtype x0, T_numtype x1, T_numtype x2,
-        T_numtype x3, T_numtype x4, T_numtype x5, T_numtype x6,
-        T_numtype x7)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-        data_[2] = x2;
-        data_[3] = x3;
-        data_[4] = x4;
-        data_[5] = x5;
-        data_[6] = x6;
-        data_[7] = x7;
-    }
-
-    TinyVector(T_numtype x0, T_numtype x1, T_numtype x2,
-        T_numtype x3, T_numtype x4, T_numtype x5, T_numtype x6,
-        T_numtype x7, T_numtype x8)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-        data_[2] = x2;
-        data_[3] = x3;
-        data_[4] = x4;
-        data_[5] = x5;
-        data_[6] = x6;
-        data_[7] = x7;
-        data_[8] = x8;
-    }
-
-    TinyVector(T_numtype x0, T_numtype x1, T_numtype x2,
-        T_numtype x3, T_numtype x4, T_numtype x5, T_numtype x6,
-        T_numtype x7, T_numtype x8, T_numtype x9)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-        data_[2] = x2;
-        data_[3] = x3;
-        data_[4] = x4;
-        data_[5] = x5;
-        data_[6] = x6;
-        data_[7] = x7;
-        data_[8] = x8;
-        data_[9] = x9;
-    }
-
-    TinyVector(T_numtype x0, T_numtype x1, T_numtype x2,
-        T_numtype x3, T_numtype x4, T_numtype x5, T_numtype x6,
-        T_numtype x7, T_numtype x8, T_numtype x9, T_numtype x10)
-    {
-        data_[0] = x0;
-        data_[1] = x1;
-        data_[2] = x2;
-        data_[3] = x3;
-        data_[4] = x4;
-        data_[5] = x5;
-        data_[6] = x6;
-        data_[7] = x7;
-        data_[8] = x8;
-        data_[9] = x9;
-        data_[10] = x10;
-    }
-
-    // Constructor added by Peter Nordlund
-    template<class P_expr>
-    inline TinyVector(_bz_VecExpr<P_expr> expr);
-
-    T_iterator begin()
-    { return T_iterator(*this); }
-
-    T_constIterator begin() const
-    { return T_constIterator(*this); }
-
-    // T_iterator end();
-    // T_constIterator end() const;
-
-    T_numtype * _bz_restrict data()
-    { return data_; }
-
-    const T_numtype * _bz_restrict data() const
-    { return data_; }
-
-    T_numtype * _bz_restrict dataFirst()
-    { return data_; }
-
-    const T_numtype * _bz_restrict dataFirst() const
-    { return data_; }
-
-    unsigned length() const
-    { return N_length; }
-
-    /////////////////////////////////////////////
-    // Library-internal member functions
-    // These are undocumented and may change or
-    // disappear in future releases.
-    /////////////////////////////////////////////
-
-    unsigned        _bz_suggestLength() const
-    { return N_length; }
-
-    _bz_bool        _bz_hasFastAccess() const
-    { return _bz_true; }
-
-    T_numtype& _bz_restrict     _bz_fastAccess(unsigned i)
-    { return data_[i]; }
-
-    T_numtype       _bz_fastAccess(unsigned i) const
-    { return data_[i]; }
-
-    template<class P_expr, class P_updater>
-    void _bz_assign(P_expr, P_updater);
-
-    _bz_VecExpr<T_constIterator> _bz_asVecExpr() const
-    { return _bz_VecExpr<T_constIterator>(begin()); }
-   
-    //////////////////////////////////////////////
-    // Subscripting operators
-    //////////////////////////////////////////////
-
-    int lengthCheck(unsigned i) const
-    {
-        BZPRECHECK(i < N_length, 
-            "TinyVector<" << BZ_DEBUG_TEMPLATE_AS_STRING_LITERAL(T_numtype) 
-            << "," << N_length << "> index out of bounds: " << i);
-        return 1;
-    }
-
-    T_numtype operator()(unsigned i) const
-    {
-        BZPRECONDITION(lengthCheck(i));
-        return data_[i];
-    }
-
-    T_numtype& _bz_restrict operator()(unsigned i)
-    { 
-        BZPRECONDITION(lengthCheck(i));
-        return data_[i];
-    }
-
-    T_numtype operator[](unsigned i) const
-    {
-        BZPRECONDITION(lengthCheck(i));
-        return data_[i];
-    }
-
-    T_numtype& _bz_restrict operator[](unsigned i)
-    {
-        BZPRECONDITION(lengthCheck(i));
-        return data_[i];
-    }
-
-    //////////////////////////////////////////////
-    // Assignment operators
-    //////////////////////////////////////////////
-
-    // Scalar operand
-    ListInitializationSwitch<T_vector> operator=(T_numtype x)
-    {
-        return ListInitializationSwitch<T_vector>(*this, x);
-    }
-
-    T_vector& initialize(T_numtype);
-    T_vector& operator+=(T_numtype);
-    T_vector& operator-=(T_numtype);
-    T_vector& operator*=(T_numtype);
-    T_vector& operator/=(T_numtype);
-    T_vector& operator%=(T_numtype);
-    T_vector& operator^=(T_numtype);
-    T_vector& operator&=(T_numtype);
-    T_vector& operator|=(T_numtype);
-    T_vector& operator>>=(int);
-    T_vector& operator<<=(int);
-
-    template<class P_numtype2> 
-    T_vector& operator=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator+=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator-=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator*=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator/=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator%=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator^=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator&=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator|=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator>>=(const TinyVector<P_numtype2, N_length> &);
-    template<class P_numtype2>
-    T_vector& operator<<=(const TinyVector<P_numtype2, N_length> &);
-
-    template<class P_numtype2> T_vector& operator=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator+=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator-=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator*=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator/=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator%=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator^=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator&=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator|=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator>>=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator<<=(const Vector<P_numtype2> &);
-
-    // Vector expression operand
-    template<class P_expr> T_vector& operator=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator+=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator-=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator*=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator/=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator%=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator^=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator&=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator|=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator>>=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator<<=(_bz_VecExpr<P_expr>);
-
-    // VectorPick operand
-    template<class P_numtype2>
-    T_vector& operator=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator+=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator-=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator*=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator/=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator%=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator^=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator&=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator|=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator>>=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator<<=(const VectorPick<P_numtype2> &);
-
-    // Range operand
-    T_vector& operator=(Range);
-    T_vector& operator+=(Range);
-    T_vector& operator-=(Range);
-    T_vector& operator*=(Range);
-    T_vector& operator/=(Range);
-    T_vector& operator%=(Range);
-    T_vector& operator^=(Range);
-    T_vector& operator&=(Range);
-    T_vector& operator|=(Range);
-    T_vector& operator>>=(Range);
-    T_vector& operator<<=(Range);
-
-    T_numtype* _bz_restrict getInitializationIterator()
-    { return dataFirst(); }
-
-private:
-    T_numtype data_[N_length];
-};
-
-
-// Specialization for N = 0: KCC is giving some
-// peculiar errors, perhaps this will fix.
-
-template<class T>
-class TinyVector<T,0> {
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/tinyveciter.h>  // Iterators
-#include <blitz/tvecglobs.h>    // Global functions
-#include <blitz/vector.h>       // Expression templates
-#include <blitz/tinyvec.cc>     // Member functions
-#include <blitz/tinyvecio.cc>   // I/O functions
-
-#endif // BZ_TINYVEC_H
-
diff --git a/weave/blitz-20001213/blitz/tinyvecio.cc b/weave/blitz-20001213/blitz/tinyvecio.cc
deleted file mode 100644
index 0328465..0000000
--- a/weave/blitz-20001213/blitz/tinyvecio.cc
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_TINYVECIO_CC
-#define BZ_TINYVECIO_CC
-
-#ifndef BZ_TINYVEC_H
- #include <blitz/tinyvec.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// NEEDS_WORK
-
-template<class P_numtype, int N_length>
-ostream& operator<<(ostream& os, const TinyVector<P_numtype, N_length>& x)
-{
-    os << N_length << " [ ";
-    for (int i=0; i < N_length; ++i)
-    {
-        os << setw(10) << x[i];
-        if (!((i+1)%7))
-            os << endl << "  ";
-    }
-    os << " ]";
-    return os;
-}
-
-// Input of tinyvec contribute by Adam Levar <adaml@mcneilhouse.com>
-template <typename T_numtype, int N_length>
-istream& operator>>(istream& is, TinyVector<T_numtype, N_length>& x)
-{
-    int length;
-    char sep;
-             
-    is >> length;
-    is >> sep;
-    BZPRECHECK(sep == '[', "Format error while scanning input array"
-        << endl << " (expected '[' before beginning of array data)");
-
-    BZPRECHECK(length == N_length, "Size mismatch");                    
-    for (int i = 0; i < N_length; ++i)
-    {
-        BZPRECHECK(!is.bad(), "Premature end of input while scanning array");
-        is >> x(i);
-    }
-    is >> sep;
-    BZPRECHECK(sep == ']', "Format error while scanning input array"
-       << endl << " (expected ']' after end of array data)");
-    
-    return is;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_TINYVECIO_CC
diff --git a/weave/blitz-20001213/blitz/tinyveciter.h b/weave/blitz-20001213/blitz/tinyveciter.h
deleted file mode 100644
index 09b9d38..0000000
--- a/weave/blitz-20001213/blitz/tinyveciter.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/***************************************************************************
- * blitz/tinyveciter.h   Declaration of TinyVectorIter<T,N,stride>
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-
-#ifndef BZ_TINYVECITER_H
-#define BZ_TINYVECITER_H
-
-#ifndef BZ_TINYVEC_H
- #include <blitz/tinyvec.h>
-#endif
-
-#ifndef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
- #error "Debug in tinyveciter.h (this line shouldn't be here)"
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// N_stride has default 1, in forward declaration in <blitz/tinyvec.h>
-template<class P_numtype, int N_length, int N_stride>
-class TinyVectorIter {
-public:
-    typedef P_numtype T_numtype;
-
-    _bz_explicit TinyVectorIter(TinyVector<T_numtype, N_length>& x)
-        : data_(x.data())
-    { }
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    TinyVectorIter(const TinyVectorIter<T_numtype, N_length, N_stride>& iter)
-        : data_(iter.data_)
-    {
-    }
-#endif
-
-    T_numtype operator[](unsigned i) const
-    {
-        BZPRECONDITION(i < N_length);
-        return data_[i * N_stride];
-    }
-
-    T_numtype& _bz_restrict operator[](unsigned i)
-    {
-        BZPRECONDITION(i < N_length);
-        return data_[i * N_stride];
-    }
-
-    T_numtype operator()(unsigned i) const
-    {
-        BZPRECONDITION(i < N_length);
-        return data_[i * N_stride];
-    }
-
-    T_numtype& _bz_restrict operator()(unsigned i)
-    {
-        BZPRECONDITION(i < N_length);
-        return data_[i * N_stride];
-    }
-
-    unsigned length(unsigned) const
-    { return N_length; }
-
-    enum { _bz_staticLengthCount = 1,
-           _bz_dynamicLengthCount = 0,
-           _bz_staticLength = 0 };
-
-    _bz_bool _bz_hasFastAccess() const
-    { return _bz_true; }
-
-    T_numtype _bz_fastAccess(unsigned i) const
-    { return data_[i * N_stride]; }
-
-    T_numtype& _bz_fastAccess(unsigned i)
-    { return data_[i * N_stride]; }
-
-    unsigned _bz_suggestLength() const
-    { return N_length; }
-
-private:
-    T_numtype * _bz_restrict data_;
-};
-
-// N_stride has default 1, in forward declaration in <blitz/tinyvec.h>
-template<class P_numtype, int N_length, int N_stride>
-class TinyVectorIterConst {
-public:
-    typedef P_numtype T_numtype;
-
-    _bz_explicit TinyVectorIterConst(const TinyVector<T_numtype, N_length>& x)
-        : data_(x.data())
-    { }
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    TinyVectorIterConst(const TinyVectorIterConst<T_numtype, N_length, 
-        N_stride>& iter)
-        : data_(iter.data_)
-    {
-    }
-
-    void operator=(const TinyVectorIterConst<T_numtype, N_length, N_stride>& 
-        iter)
-    {
-        data_ = iter.data_;
-    }
-#endif
-
-    T_numtype operator[](unsigned i) const
-    {
-        BZPRECONDITION(i < N_length);
-        return data_[i * N_stride];
-    }
-
-    T_numtype operator()(unsigned i) const
-    {
-        BZPRECONDITION(i < N_length);
-        return data_[i * N_stride];
-    }
-
-    unsigned length(unsigned) const
-    { return N_length; }
-
-    enum { _bz_staticLengthCount = 1,
-           _bz_dynamicLengthCount = 0,
-           _bz_staticLength = 0 };
-
-    _bz_bool _bz_hasFastAccess() const
-    { return _bz_true; }
-
-    T_numtype _bz_fastAccess(unsigned i) const
-    { return data_[i * N_stride]; }
-
-    unsigned _bz_suggestLength() const
-    { return N_length; }
-
-private:
-    const T_numtype * _bz_restrict data_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_TINYVECITER_H
diff --git a/weave/blitz-20001213/blitz/traversal.cc b/weave/blitz-20001213/blitz/traversal.cc
deleted file mode 100644
index 581225c..0000000
--- a/weave/blitz-20001213/blitz/traversal.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-#ifndef BZ_TRAVERSAL_CC
-#define BZ_TRAVERSAL_CC
-
-#ifndef BZ_TRAVERSAL_H
- #error <blitz/traversal.cc> must be included via <blitz/traversal.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Next line is a workaround for Intel C++ V4.0 oddity, due
-// to Allan Stokes.
-
-#ifdef BZ_INTEL_KLUDGE
-  static set<TraversalOrder<2> > *_bz_intel_kludge;
-#endif
-
-template<int N_dimensions>
-_bz_typename TraversalOrderCollection<N_dimensions>::T_set
-    TraversalOrderCollection<N_dimensions>::traversals_;
-
-template<int N>
-void makeHilbert(Vector<TinyVector<int,N> >& coord, 
-    int x0, int y0, int xis, int xjs,
-    int yis, int yjs, int n, int& i)
-{
-    // N != 2 is not yet implemented.
-    BZPRECONDITION(N == 2);
-
-    if (!n)
-    {
-        if (i > coord.length())
-        {
-            cerr << "makeHilbert: vector not long enough" << endl;
-            exit(1);
-        }
-        coord[i][0] = x0 + (xis+yis)/2;
-        coord[i][1] = y0 + (xjs+yjs)/2;
-        ++i;
-    }
-    else {
-        makeHilbert(coord,x0,y0,yis/2, yjs/2, xis/2, xjs/2, n-1, i);
-        makeHilbert(coord,x0+xis/2,y0+xjs/2,xis/2,xjs/2,yis/2,yjs/2,n-1,i);
-        makeHilbert(coord,x0+xis/2+yis/2,y0+xjs/2+yjs/2,xis/2,xjs/2,yis/2,
-            yjs/2,n-1,i);
-        makeHilbert(coord,x0+xis/2+yis, y0+xjs/2+yjs, -yis/2,-yjs/2,-xis/2,
-            -xjs/2,n-1,i);
-    }
-}
-
-template<int N_dimensions>
-void MakeHilbertTraversal(Vector<TinyVector<int,N_dimensions> >& coord, 
-    int length)
-{
-    // N_dimensions != 2 not yet implemented
-    BZPRECONDITION(N_dimensions == 2);
-
-    // The constant on the next line is ln(2)
-    int d = (int)(::ceil(::log((double)length) / 0.693147180559945309417));  
-
-    int N = 1 << d;
-    const int Npoints = N*N;
-    Vector<TinyVector<int,2> > coord2(Npoints);
-
-    int i=0;
-    makeHilbert(coord2,0,0,32768,0,0,32768,d,i);
-
-    int xp0 = coord2[0][0];
-    int yp0 = coord2[0][1];
-
-    int j=0;
-
-    coord.resize(length * length);
-
-    for (int i=0; i < Npoints; ++i)
-    {
-        coord2[i][0] = (coord2[i][0]-xp0)/(2*xp0);
-        coord2[i][1] = (coord2[i][1]-yp0)/(2*yp0);
-
-        if ((coord2[i][0] < length) && (coord2[i][1] < length) 
-            && (coord2[i][0] >= 0) && (coord2[i][1] >= 0))
-        {
-            coord[j][0] = coord2[i][0];
-            coord[j][1] = coord2[i][1];
-            ++j;
-        }
-    }
-}
-
-template<int N_dimensions>
-void generateFastTraversalOrder(const TinyVector<int,N_dimensions>& size)
-{
-    BZPRECONDITION(N_dimensions == 2);
-    BZPRECONDITION(size[0] == size[1]);
-
-    TraversalOrderCollection<2> travCol;
-    if (travCol.find(size))
-        return;
-
-    Vector<TinyVector<int,2> > ordering(size[0]);
-
-    MakeHilbertTraversal(ordering, size[0]);
-    travCol.insert(TraversalOrder<2>(size, ordering));
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_TRAVERSAL_CC
diff --git a/weave/blitz-20001213/blitz/traversal.h b/weave/blitz-20001213/blitz/traversal.h
deleted file mode 100644
index 9077aa1..0000000
--- a/weave/blitz-20001213/blitz/traversal.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/***************************************************************************
- * blitz/traversal.h      Declaration of the TraversalOrder classes
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-// Fast traversal orders require the ISO/ANSI C++ standard library
-// (particularly set).
-#ifdef BZ_HAVE_STD
-
-#ifndef BZ_TRAVERSAL_H
-#define BZ_TRAVERSAL_H
-
-#ifndef BZ_TINYVEC_H
- #include <blitz/tinyvec.h>
-#endif
-
-#ifndef BZ_VECTOR_H
- #include <blitz/vector.h>
-#endif
-
-#include <set>
-
-BZ_NAMESPACE(blitz)
-
-template<int N_dimensions>
-class TraversalOrder {
-
-public:
-    typedef TinyVector<int, N_dimensions> T_coord;
-    typedef Vector<T_coord>               T_traversal;
-
-    TraversalOrder()
-    {
-        size_ = 0;
-    }
-
-    TraversalOrder(const T_coord& size, T_traversal& order)
-        : size_(size), order_(order)
-    { }
-
-    TraversalOrder(const T_coord& size)
-        : size_(size)
-    { }
-
-    T_coord operator[](int i) const
-    { return order_[i]; }
-
-    T_coord& operator[](int i)
-    { return order_[i]; }
-
-    int length() const
-    { return order_.length(); }
-
-    bool operator<(const TraversalOrder<N_dimensions>& x) const
-    {
-        for (int i=0; i < N_dimensions; ++i)
-        {
-            if (size_[i] < x.size_[i])
-                return true;
-            else if (size_[i] > x.size_[i])
-                return false;
-        }
-        return false;
-    }
-
-    bool operator==(const TraversalOrder<N_dimensions>& x) const
-    {
-        for (int i=0; i < N_dimensions; ++i)
-        {
-            if (size_[i] != x.size_[i])
-                return false;
-        }
-
-        return true;
-    }
-
-protected:
-    T_traversal order_;
-    T_coord     size_;
-};
-
-/*
- * This specialization is provided to avoid problems with zero-length
- * vectors.
- */
-template<>
-class TraversalOrder<0> {
-public:
-     TraversalOrder () {} // AJS
-};
-
-template<int N_dimensions>
-class TraversalOrderCollection {
-public:
-    typedef TraversalOrder<N_dimensions>        T_traversal;
-    typedef _bz_typename T_traversal::T_coord   T_coord;
-    typedef set<T_traversal>                    T_set;
-    typedef _bz_typename set<T_traversal>::const_iterator T_iterator;
-
-    const T_traversal* find(const T_coord& size)
-    {
-        T_iterator iter = traversals_.find(T_traversal(size));
-        if (iter != traversals_.end())
-            return &(*iter);
-        return 0;
-    }
-
-    void insert(T_traversal x)
-    {
-        traversals_.insert(x);
-    }
-
-protected:
-    static T_set traversals_;
-};
-
-/*
- * This specialization is provided to avoid problems with zero-length
- * vectors.
- */
-
-template<>
-class TraversalOrderCollection<0> {
-public:
-    typedef int T_traversal;
-    typedef int T_coord;
-    typedef int T_set;
-    typedef int T_iterator;
-
-    const T_traversal* find(const T_coord& size)
-    { return 0; }
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/traversal.cc>
-
-#endif // BZ_TRAVERSAL_H
-
-#endif // BZ_HAVE_STD
-
diff --git a/weave/blitz-20001213/blitz/tuning.h b/weave/blitz-20001213/blitz/tuning.h
deleted file mode 100644
index 852e874..0000000
--- a/weave/blitz-20001213/blitz/tuning.h
+++ /dev/null
@@ -1,172 +0,0 @@
-/***************************************************************************
- * blitz/tuning.h      Platform-specific code tuning
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.6  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.5  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.4  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1996/11/11 17:29:13  tveldhui
- * Initial revision
- *
- *
- */
-
-#ifndef BZ_TUNING_H
-#define BZ_TUNING_H
-
-// These estimates should be conservative (i.e. underestimate the
-// cache sizes).
-#define BZ_L1_CACHE_ESTIMATED_SIZE    8192
-#define BZ_L2_CACHE_ESTIMATED_SIZE    65536
-
-
-#undef  BZ_PARTIAL_LOOP_UNROLL
-#define BZ_PASS_EXPR_BY_VALUE
-#undef  BZ_PTR_INC_FASTER_THAN_INDIRECTION
-#define BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-#undef  BZ_KCC_COPY_PROPAGATION_KLUDGE
-#undef  BZ_ALTERNATE_FORWARD_BACKWARD_TRAVERSALS
-#undef  BZ_ARRAY_EXPR_PASS_INDEX_BY_VALUE
-#define BZ_INLINE_GROUP1
-#define BZ_INLINE_GROUP2
-#define BZ_COLLAPSE_LOOPS
-#define BZ_USE_FAST_READ_ARRAY_EXPR
-#define BZ_ARRAY_EXPR_USE_COMMON_STRIDE
-#undef  BZ_ARRAY_FAST_TRAVERSAL_UNROLL
-#undef  BZ_ARRAY_STACK_TRAVERSAL_CSE_AND_ANTIALIAS
-#undef  BZ_ARRAY_STACK_TRAVERSAL_UNROLL
-#define BZ_ARRAY_2D_STENCIL_TILING
-#define BZ_ARRAY_2D_STENCIL_TILE_SIZE       128
-#undef  BZ_INTERLACE_ARRAYS
-#undef  BZ_ALIGN_BLOCKS_ON_CACHELINE_BOUNDARY
-#define BZ_FAST_COMPILE
-
-
-#ifndef BZ_DISABLE_NEW_ET
- #define BZ_NEW_EXPRESSION_TEMPLATES
-#endif
-
-#ifdef BZ_FAST_COMPILE
-#define BZ_ETPARMS_CONSTREF
-#define BZ_NO_INLINE_ET
-#endif
-
-/*
- * Platform-specific tuning
- */
-
-#ifdef _CRAYT3E
- // The backend compiler on the T3E does a better job of
- // loop unrolling.
- #undef BZ_PARTIAL_LOOP_UNROLL
- #undef BZ_ARRAY_FAST_TRAVERSAL_UNROLL
- #undef BZ_ARRAY_STACK_TRAVERSAL_UNROLL
-#endif
-
-#ifdef __GNUC__
- // The egcs compiler does a good job of loop unrolling, if
- // -funroll-loops is used.
- #undef BZ_PARTIAL_LOOP_UNROLL
- #undef BZ_ARRAY_FAST_TRAVERSAL_UNROLL
- #undef BZ_ARRAY_STACK_TRAVERSAL_UNROLL
-#endif
-
-#ifdef  BZ_DISABLE_KCC_COPY_PROPAGATION_KLUDGE
- #undef BZ_KCC_COPY_PROPAGATION_KLUDGE
-#endif
-
-#ifdef  BZ_INLINE_GROUP1
- #define _bz_inline1 inline
-#else
- #define _bz_inline1
-#endif
-
-#ifdef  BZ_INLINE_GROUP2
- #define _bz_inline2 inline
-#else
- #define _bz_inline2
-#endif
-
-#ifdef  BZ_NO_INLINE_ET
- #define _bz_inline_et 
-#else
- #define _bz_inline_et inline
-#endif
-
-#ifdef  BZ_ETPARMS_CONSTREF
- #define BZ_ETPARM(X) const X&
-#else
- #define BZ_ETPARM(X) X
-#endif
-
-#ifdef __DECCXX
- // The DEC cxx compiler has problems with loop unrolling
- // because of aliasing.  Loop unrolling and anti-aliasing
- // is done by Blitz++.
-
-  #define  BZ_PARTIAL_LOOP_UNROLL
-  #define  BZ_ARRAY_STACK_TRAVERSAL_CSE_AND_ANTIALIAS
-  #define  BZ_ARRAY_STACK_TRAVERSAL_UNROLL
-#endif
-
-/*
- * BZ_NO_PROPAGATE(X) prevents the compiler from performing
- * copy propagation on a variable.  This is used for loop
- * unrolling to prevent KAI C++ from rearranging the
- * ordering of memory accesses.
- */
-
-#define BZ_NO_PROPAGATE(X)   X
-
-#ifdef __KCC
-#ifdef BZ_USE_NO_PROPAGATE
-    extern "C" int __kai_apply(const char*, ...);
-
-    #undef  BZ_NO_PROPAGATE(X)
-    #define BZ_NO_PROPAGATE(X)  __kai_apply("(%a)",&X)
-#endif
-#endif
-
-#endif // BZ_TUNING_H
diff --git a/weave/blitz-20001213/blitz/tvcross.h b/weave/blitz-20001213/blitz/tvcross.h
deleted file mode 100644
index 7606d5b..0000000
--- a/weave/blitz-20001213/blitz/tvcross.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/***************************************************************************
- * blitz/tvcross.h      Cross product of TinyVector<N,3>'s
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.1  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- */
-
-#ifndef BZ_TVCROSS_H
-#define BZ_TVCROSS_H
-
-#ifndef BZ_TINYVEC_H
- #error <blitz/tvcross.h> must be included via <blitz/tinyvec.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/*
- * cross product.
- *
- * NEEDS_WORK: - cross product of two different vector types
- *             - cross product involving expressions
- */
-
-template<class T_numtype>
-TinyVector<T_numtype,3> cross(const TinyVector<T_numtype,3>& x, 
-    const TinyVector<T_numtype,3>& y)
-{
-    return TinyVector<T_numtype,3>(x[1]*y[2] - y[1]*x[2],
-        y[0]*x[2] - x[0]*y[2], x[0]*y[1] - y[0]*x[1]);
-}
-
-
-BZ_NAMESPACE_END
-
-#endif // BZ_TVCROSS_H
diff --git a/weave/blitz-20001213/blitz/tvecglobs.h b/weave/blitz-20001213/blitz/tvecglobs.h
deleted file mode 100644
index 0eb3834..0000000
--- a/weave/blitz-20001213/blitz/tvecglobs.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/***************************************************************************
- * blitz/tvecglobs.h     TinyVector global functions
- *
- * $Id$
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_TVECGLOBS_H
-#define BZ_TVECGLOBS_H
-
-#ifndef BZ_META_METAPROG_H
- #include <blitz/meta/metaprog.h>
-#endif
-
-#ifndef BZ_NUMTRAIT_H
- #include <blitz/numtrait.h>
-#endif
-
-#include <blitz/tvcross.h>       // Cross products
-#include <blitz/meta/dot.h>
-#include <blitz/meta/product.h>
-#include <blitz/meta/sum.h>
-
-BZ_NAMESPACE(blitz)
-
-template<class T_numtype1, class T_numtype2, int N_length>
-inline BZ_PROMOTE(T_numtype1, T_numtype2)
-dot(const TinyVector<T_numtype1, N_length>& a, 
-    const TinyVector<T_numtype2, N_length>& b)
-{
-    return _bz_meta_vectorDot<N_length, 0>::f(a,b);
-}
-
-template<class T_expr1, class T_numtype2, int N_length>
-inline BZ_PROMOTE(_bz_typename T_expr1::T_numtype, T_numtype2)
-dot(_bz_VecExpr<T_expr1> a, const TinyVector<T_numtype2, N_length>& b)
-{
-    return _bz_meta_vectorDot<N_length, 0>::f_value_ref(a,b);
-}
-
-template<class T_numtype1, class T_expr2, int N_length>
-inline BZ_PROMOTE(T_numtype1, _bz_typename T_expr2::T_numtype)
-dot(const TinyVector<T_numtype1, N_length>& a, _bz_VecExpr<T_expr2> b)
-{
-    return _bz_meta_vectorDot<N_length, 0>::f_ref_value(a,b);
-}
-
-template<class T_numtype1, int N_length>
-inline BZ_SUMTYPE(T_numtype1)
-product(const TinyVector<T_numtype1, N_length>& a)
-{
-    return _bz_meta_vectorProduct<N_length, 0>::f(a);
-}
-
-template<class T_numtype, int N_length>
-inline T_numtype
-sum(const TinyVector<T_numtype, N_length>& a)
-{
-    return _bz_meta_vectorSum<N_length, 0>::f(a);
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_TVECGLOBS_H
-
diff --git a/weave/blitz-20001213/blitz/update.h b/weave/blitz-20001213/blitz/update.h
deleted file mode 100644
index dde9411..0000000
--- a/weave/blitz-20001213/blitz/update.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/***************************************************************************
- * blitz/update.h      Declaration of the _bz_XXXX updater classes
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_UPDATE_H
-#define BZ_UPDATE_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-class _bz_updater_base { };
-
-#define BZ_DECL_UPDATER(name,op,symbol)               \
-  template<class X, class Y>                          \
-  class name : public _bz_updater_base {              \
-  public:                                             \
-    static inline void update(X& _bz_restrict x, Y y) \
-    { x op y; }                                       \
-    static void prettyPrint(string& str)              \
-    { str += symbol; }                                \
-  }
-
-template<class X, class Y>
-class _bz_update : public _bz_updater_base {
-  public:
-    static inline void update(X& _bz_restrict x, Y y)
-    { x = (X)y; }
-
-    static void prettyPrint(string& str)
-    { str += "="; }
-};
-
-BZ_DECL_UPDATER(_bz_plus_update, +=, "+=");
-BZ_DECL_UPDATER(_bz_minus_update, -=, "-=");
-BZ_DECL_UPDATER(_bz_multiply_update, *=, "*=");
-BZ_DECL_UPDATER(_bz_divide_update, /=, "/=");
-BZ_DECL_UPDATER(_bz_mod_update, %=, "%=");
-BZ_DECL_UPDATER(_bz_xor_update, ^=, "^=");
-BZ_DECL_UPDATER(_bz_bitand_update, &=, "&=");
-BZ_DECL_UPDATER(_bz_bitor_update, |=, "|=");
-BZ_DECL_UPDATER(_bz_shiftl_update, <<=, "<<=");
-BZ_DECL_UPDATER(_bz_shiftr_update, >>=, ">>=");
-
-BZ_NAMESPACE_END
-
-#endif // BZ_UPDATE_H
-
diff --git a/weave/blitz-20001213/blitz/vecaccum.cc b/weave/blitz-20001213/blitz/vecaccum.cc
deleted file mode 100644
index eceb065..0000000
--- a/weave/blitz-20001213/blitz/vecaccum.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECACCUM_CC
-#define BZ_VECACCUM_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecaccum.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P>
-inline
-Vector<BZ_SUMTYPE(_bz_typename P::T_numtype)> _bz_vec_accumulate(P expr)
-{
-    typedef BZ_SUMTYPE(_bz_typename P::T_numtype) T_sumtype;
-    int length = expr._bz_suggestLength();
-    Vector<T_sumtype> z(length);
-    T_sumtype sum = 0;
-
-    if (expr._bz_hasFastAccess())
-    {
-        for (int i=0; i < length; ++i)
-        {
-            sum += expr._bz_fastAccess(i);
-            z[i] = sum;
-        }
-    }
-    else {
-        for (int i=0; i < length; ++i)
-        {
-            sum += expr(i);
-            z[i] = sum;
-        }
-    }
-
-    return z;
-}
-template<class P_numtype>
-Vector<BZ_SUMTYPE(P_numtype)> accumulate(const Vector<P_numtype>& x)
-{
-    return _bz_vec_accumulate(x);
-}
-
-template<class P_expr>
-Vector<BZ_SUMTYPE(_bz_typename P_expr::T_numtype)>
-accumulate(_bz_VecExpr<P_expr> x)
-{
-    return _bz_vec_accumulate(x);
-}
-
-template<class P_numtype>
-Vector<BZ_SUMTYPE(P_numtype)> accumulate(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_accumulate(x);
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECACCUM_CC
-
diff --git a/weave/blitz-20001213/blitz/vecall.cc b/weave/blitz-20001213/blitz/vecall.cc
deleted file mode 100644
index d38a45b..0000000
--- a/weave/blitz-20001213/blitz/vecall.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECALL_CC
-#define BZ_VECALL_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecall.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr>
-inline _bz_bool _bz_vec_all(P_expr vector)
-{
-    int length = vector._bz_suggestLength();
-
-    if (vector._bz_hasFastAccess())
-    {
-        for (int i=0; i < length; ++i)
-            if (!vector._bz_fastAccess(i))
-                return _bz_false;
-    }
-    else {
-        for (int i=0; i < length; ++i)
-            if (!vector[i])
-                return _bz_false;
-    }
-
-    return _bz_true;
-}
-
-template<class P_numtype>
-inline _bz_bool all(const Vector<P_numtype>& x)
-{
-    return _bz_vec_all(x._bz_asVecExpr());
-}
-
-template<class P_expr>
-inline _bz_bool all(_bz_VecExpr<P_expr> expr)
-{
-    return _bz_vec_all(expr);
-}
-
-template<class P_numtype>
-inline _bz_bool all(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_all(x._bz_asVecExpr());
-}
-
-template<class P_numtype, int N_dimensions>
-inline _bz_bool all(const TinyVector<P_numtype, N_dimensions>& x)
-{
-    return _bz_vec_all(x._bz_asVecExpr());
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECALL_CC
-
diff --git a/weave/blitz-20001213/blitz/vecany.cc b/weave/blitz-20001213/blitz/vecany.cc
deleted file mode 100644
index 0f99bef..0000000
--- a/weave/blitz-20001213/blitz/vecany.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECANY_CC
-#define BZ_VECANY_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecany.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr>
-inline _bz_bool _bz_vec_any(P_expr vector)
-{
-    int length = vector._bz_suggestLength();
-
-    if (vector._bz_hasFastAccess())
-    {
-        for (int i=0; i < length; ++i)
-            if (vector._bz_fastAccess(i))
-                return _bz_true;
-    }
-    else {
-        for (int i=0; i < length; ++i)
-            if (vector[i])
-                return _bz_true;
-    }
-
-    return _bz_false;
-}
-
-template<class P_numtype>
-inline _bz_bool any(const Vector<P_numtype>& x)
-{
-    return _bz_vec_any(x._bz_asVecExpr());
-}
-
-template<class P_expr>
-inline _bz_bool any(_bz_VecExpr<P_expr> expr)
-{
-    return _bz_vec_any(expr);
-}
-
-template<class P_numtype>
-inline _bz_bool any(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_any(x._bz_asVecExpr());
-}
-
-template<class P_numtype, int N_dimensions>
-inline _bz_bool any(const TinyVector<P_numtype, N_dimensions>& x)
-{
-    return _bz_vec_any(x._bz_asVecExpr());
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECANY_CC
-
diff --git a/weave/blitz-20001213/blitz/vecbfn.cc b/weave/blitz-20001213/blitz/vecbfn.cc
deleted file mode 100644
index 6b5fc98..0000000
--- a/weave/blitz-20001213/blitz/vecbfn.cc
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef BZ_VECBFN_H
-#define BZ_VECBFN_H
-
-#ifndef BZ_VECEXPR_H
- #error <blitz/vecbfn.h> must be included via <blitz/vecexpr.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Math functions with 2 operands have not yet been implemented.
-
-BZ_NAMESPACE_END
-
-#endif
-
diff --git a/weave/blitz-20001213/blitz/vecbops.cc b/weave/blitz-20001213/blitz/vecbops.cc
deleted file mode 100644
index de26015..0000000
--- a/weave/blitz-20001213/blitz/vecbops.cc
+++ /dev/null
@@ -1,17299 +0,0 @@
-/***************************************************************************
- * blitz/vecbops.cc	Vector expression templates (2 operands)
- *
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.   Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- * Licensing inquiries:  blitz-licenses@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- */ 
-
-// Generated source file.  Do not edit. 
-// genvecbops.cpp Aug  7 1997 15:15:07
-
-#ifndef BZ_VECBOPS_CC
-#define BZ_VECBOPS_CC
-
-#ifndef BZ_VECEXPR_H
- #error <blitz/vecbops.cc> must be included via <blitz/vecexpr.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-/****************************************************************************
- * Addition Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> + Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<P_numtype1, P_numtype2 > > >
-operator+(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> + _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator+(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> + VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<P_numtype1, P_numtype2 > > >
-operator+(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> + Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_Add<P_numtype1, int > > >
-operator+(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_Add<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> + TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<P_numtype1, P_numtype2 > > >
-operator+(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> + int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Add<P_numtype1, int > > >
-operator+(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Add<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> + float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Add<P_numtype1, float > > >
-operator+(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Add<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> + double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Add<P_numtype1, double > > >
-operator+(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Add<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> + long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Add<P_numtype1, long double > > >
-operator+(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Add<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> + complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Add<P_numtype1, complex<T2>  > > >
-operator+(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Add<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> + Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> + _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> + VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> + Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_Add<_bz_typename P_expr1::T_numtype, int > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> + TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> + int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Add<_bz_typename P_expr1::T_numtype, int > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> + float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Add<_bz_typename P_expr1::T_numtype, float > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> + double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Add<_bz_typename P_expr1::T_numtype, double > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> + long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Add<_bz_typename P_expr1::T_numtype, long double > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Add<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> + complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Add<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator+(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Add<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> + Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<P_numtype1, P_numtype2 > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> + _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> + VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<P_numtype1, P_numtype2 > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> + Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_Add<P_numtype1, int > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_Add<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> + TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<P_numtype1, P_numtype2 > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> + int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Add<P_numtype1, int > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Add<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> + float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Add<P_numtype1, float > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Add<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> + double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Add<P_numtype1, double > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Add<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> + long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Add<P_numtype1, long double > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Add<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> + complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Add<P_numtype1, complex<T2>  > > >
-operator+(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Add<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range + Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<int, P_numtype2 > > >
-operator+(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range + _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<int, _bz_typename P_expr2::T_numtype > > >
-operator+(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range + VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<int, P_numtype2 > > >
-operator+(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range + Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_Add<int, int > > >
-operator+(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_Add<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range + TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<int, P_numtype2 > > >
-operator+(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range + float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_Add<int, float > > >
-operator+(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_Add<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range + double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_Add<int, double > > >
-operator+(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_Add<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range + long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_Add<int, long double > > >
-operator+(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Add<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range + complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Add<int, complex<T2>  > > >
-operator+(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Add<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> + Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<P_numtype1, P_numtype2 > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> + _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> + VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<P_numtype1, P_numtype2 > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> + Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_Add<P_numtype1, int > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_Add<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> + TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<P_numtype1, P_numtype2 > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> + int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Add<P_numtype1, int > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Add<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> + float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Add<P_numtype1, float > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Add<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> + double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Add<P_numtype1, double > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Add<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> + long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Add<P_numtype1, long double > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Add<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> + complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Add<P_numtype1, complex<T2>  > > >
-operator+(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Add<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int + Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<int, P_numtype2 > > >
-operator+(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int + _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<int, _bz_typename P_expr2::T_numtype > > >
-operator+(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int + VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<int, P_numtype2 > > >
-operator+(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int + TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<int, P_numtype2 > > >
-operator+(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float + Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<float, P_numtype2 > > >
-operator+(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float + _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<float, _bz_typename P_expr2::T_numtype > > >
-operator+(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float + VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<float, P_numtype2 > > >
-operator+(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float + Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_Add<float, int > > >
-operator+(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_Add<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float + TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<float, P_numtype2 > > >
-operator+(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double + Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<double, P_numtype2 > > >
-operator+(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double + _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<double, _bz_typename P_expr2::T_numtype > > >
-operator+(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double + VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<double, P_numtype2 > > >
-operator+(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double + Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_Add<double, int > > >
-operator+(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_Add<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double + TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<double, P_numtype2 > > >
-operator+(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double + Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<long double, P_numtype2 > > >
-operator+(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double + _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<long double, _bz_typename P_expr2::T_numtype > > >
-operator+(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double + VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<long double, P_numtype2 > > >
-operator+(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double + Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_Add<long double, int > > >
-operator+(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_Add<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double + TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<long double, P_numtype2 > > >
-operator+(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> + Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_Add<complex<T1> , P_numtype2 > > >
-operator+(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_Add<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> + _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_Add<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator+(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Add<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> + VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Add<complex<T1> , P_numtype2 > > >
-operator+(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Add<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> + Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_Add<complex<T1> , int > > >
-operator+(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_Add<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> + TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Add<complex<T1> , P_numtype2 > > >
-operator+(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Add<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Subtraction Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> - Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<P_numtype1, P_numtype2 > > >
-operator-(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> - _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator-(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> - VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<P_numtype1, P_numtype2 > > >
-operator-(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> - Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_Subtract<P_numtype1, int > > >
-operator-(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_Subtract<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> - TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<P_numtype1, P_numtype2 > > >
-operator-(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> - int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Subtract<P_numtype1, int > > >
-operator-(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Subtract<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> - float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Subtract<P_numtype1, float > > >
-operator-(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Subtract<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> - double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Subtract<P_numtype1, double > > >
-operator-(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Subtract<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> - long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Subtract<P_numtype1, long double > > >
-operator-(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Subtract<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> - complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Subtract<P_numtype1, complex<T2>  > > >
-operator-(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Subtract<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> - Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> - _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> - VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> - Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, int > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> - TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> - int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, int > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> - float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, float > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> - double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, double > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> - long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, long double > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> - complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator-(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Subtract<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> - Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<P_numtype1, P_numtype2 > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> - _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> - VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<P_numtype1, P_numtype2 > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> - Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_Subtract<P_numtype1, int > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_Subtract<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> - TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<P_numtype1, P_numtype2 > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> - int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Subtract<P_numtype1, int > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Subtract<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> - float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Subtract<P_numtype1, float > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Subtract<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> - double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Subtract<P_numtype1, double > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Subtract<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> - long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Subtract<P_numtype1, long double > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Subtract<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> - complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Subtract<P_numtype1, complex<T2>  > > >
-operator-(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Subtract<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range - Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<int, P_numtype2 > > >
-operator-(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range - _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<int, _bz_typename P_expr2::T_numtype > > >
-operator-(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range - VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<int, P_numtype2 > > >
-operator-(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range - Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_Subtract<int, int > > >
-operator-(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_Subtract<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range - TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<int, P_numtype2 > > >
-operator-(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range - float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_Subtract<int, float > > >
-operator-(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_Subtract<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range - double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_Subtract<int, double > > >
-operator-(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_Subtract<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range - long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_Subtract<int, long double > > >
-operator-(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Subtract<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range - complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Subtract<int, complex<T2>  > > >
-operator-(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Subtract<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> - Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<P_numtype1, P_numtype2 > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> - _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> - VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<P_numtype1, P_numtype2 > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> - Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_Subtract<P_numtype1, int > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_Subtract<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> - TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<P_numtype1, P_numtype2 > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> - int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Subtract<P_numtype1, int > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Subtract<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> - float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Subtract<P_numtype1, float > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Subtract<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> - double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Subtract<P_numtype1, double > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Subtract<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> - long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Subtract<P_numtype1, long double > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Subtract<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> - complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Subtract<P_numtype1, complex<T2>  > > >
-operator-(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Subtract<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int - Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<int, P_numtype2 > > >
-operator-(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int - _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<int, _bz_typename P_expr2::T_numtype > > >
-operator-(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int - VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<int, P_numtype2 > > >
-operator-(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int - TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<int, P_numtype2 > > >
-operator-(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float - Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<float, P_numtype2 > > >
-operator-(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float - _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<float, _bz_typename P_expr2::T_numtype > > >
-operator-(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float - VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<float, P_numtype2 > > >
-operator-(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float - Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_Subtract<float, int > > >
-operator-(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_Subtract<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float - TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<float, P_numtype2 > > >
-operator-(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double - Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<double, P_numtype2 > > >
-operator-(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double - _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<double, _bz_typename P_expr2::T_numtype > > >
-operator-(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double - VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<double, P_numtype2 > > >
-operator-(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double - Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_Subtract<double, int > > >
-operator-(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_Subtract<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double - TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<double, P_numtype2 > > >
-operator-(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double - Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<long double, P_numtype2 > > >
-operator-(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double - _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<long double, _bz_typename P_expr2::T_numtype > > >
-operator-(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double - VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<long double, P_numtype2 > > >
-operator-(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double - Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_Subtract<long double, int > > >
-operator-(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_Subtract<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double - TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<long double, P_numtype2 > > >
-operator-(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> - Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_Subtract<complex<T1> , P_numtype2 > > >
-operator-(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_Subtract<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> - _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_Subtract<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator-(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Subtract<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> - VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Subtract<complex<T1> , P_numtype2 > > >
-operator-(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Subtract<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> - Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_Subtract<complex<T1> , int > > >
-operator-(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_Subtract<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> - TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Subtract<complex<T1> , P_numtype2 > > >
-operator-(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Subtract<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Multiplication Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> * Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<P_numtype1, P_numtype2 > > >
-operator*(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> * _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator*(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> * VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<P_numtype1, P_numtype2 > > >
-operator*(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> * Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_Multiply<P_numtype1, int > > >
-operator*(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_Multiply<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> * TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<P_numtype1, P_numtype2 > > >
-operator*(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> * int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Multiply<P_numtype1, int > > >
-operator*(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Multiply<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> * float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Multiply<P_numtype1, float > > >
-operator*(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Multiply<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> * double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Multiply<P_numtype1, double > > >
-operator*(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Multiply<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> * long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Multiply<P_numtype1, long double > > >
-operator*(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Multiply<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> * complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Multiply<P_numtype1, complex<T2>  > > >
-operator*(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Multiply<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> * Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> * _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> * VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> * Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, int > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> * TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> * int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, int > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> * float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, float > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> * double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, double > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> * long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, long double > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> * complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator*(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Multiply<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> * Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<P_numtype1, P_numtype2 > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> * _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> * VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<P_numtype1, P_numtype2 > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> * Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_Multiply<P_numtype1, int > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_Multiply<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> * TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<P_numtype1, P_numtype2 > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> * int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Multiply<P_numtype1, int > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Multiply<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> * float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Multiply<P_numtype1, float > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Multiply<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> * double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Multiply<P_numtype1, double > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Multiply<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> * long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Multiply<P_numtype1, long double > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Multiply<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> * complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Multiply<P_numtype1, complex<T2>  > > >
-operator*(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Multiply<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range * Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<int, P_numtype2 > > >
-operator*(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range * _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<int, _bz_typename P_expr2::T_numtype > > >
-operator*(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range * VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<int, P_numtype2 > > >
-operator*(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range * Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_Multiply<int, int > > >
-operator*(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_Multiply<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range * TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<int, P_numtype2 > > >
-operator*(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range * float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_Multiply<int, float > > >
-operator*(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_Multiply<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range * double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_Multiply<int, double > > >
-operator*(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_Multiply<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range * long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_Multiply<int, long double > > >
-operator*(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Multiply<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range * complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Multiply<int, complex<T2>  > > >
-operator*(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Multiply<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> * Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<P_numtype1, P_numtype2 > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> * _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> * VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<P_numtype1, P_numtype2 > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> * Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_Multiply<P_numtype1, int > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_Multiply<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> * TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<P_numtype1, P_numtype2 > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> * int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Multiply<P_numtype1, int > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Multiply<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> * float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Multiply<P_numtype1, float > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Multiply<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> * double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Multiply<P_numtype1, double > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Multiply<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> * long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Multiply<P_numtype1, long double > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Multiply<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> * complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Multiply<P_numtype1, complex<T2>  > > >
-operator*(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Multiply<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int * Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<int, P_numtype2 > > >
-operator*(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int * _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<int, _bz_typename P_expr2::T_numtype > > >
-operator*(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int * VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<int, P_numtype2 > > >
-operator*(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int * TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<int, P_numtype2 > > >
-operator*(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float * Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<float, P_numtype2 > > >
-operator*(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float * _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<float, _bz_typename P_expr2::T_numtype > > >
-operator*(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float * VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<float, P_numtype2 > > >
-operator*(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float * Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_Multiply<float, int > > >
-operator*(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_Multiply<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float * TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<float, P_numtype2 > > >
-operator*(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double * Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<double, P_numtype2 > > >
-operator*(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double * _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<double, _bz_typename P_expr2::T_numtype > > >
-operator*(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double * VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<double, P_numtype2 > > >
-operator*(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double * Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_Multiply<double, int > > >
-operator*(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_Multiply<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double * TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<double, P_numtype2 > > >
-operator*(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double * Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<long double, P_numtype2 > > >
-operator*(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double * _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<long double, _bz_typename P_expr2::T_numtype > > >
-operator*(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double * VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<long double, P_numtype2 > > >
-operator*(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double * Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_Multiply<long double, int > > >
-operator*(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_Multiply<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double * TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<long double, P_numtype2 > > >
-operator*(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> * Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_Multiply<complex<T1> , P_numtype2 > > >
-operator*(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_Multiply<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> * _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_Multiply<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator*(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Multiply<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> * VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Multiply<complex<T1> , P_numtype2 > > >
-operator*(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Multiply<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> * Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_Multiply<complex<T1> , int > > >
-operator*(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_Multiply<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> * TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Multiply<complex<T1> , P_numtype2 > > >
-operator*(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Multiply<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Division Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> / Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<P_numtype1, P_numtype2 > > >
-operator/(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> / _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator/(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> / VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<P_numtype1, P_numtype2 > > >
-operator/(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> / Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_Divide<P_numtype1, int > > >
-operator/(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_Divide<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> / TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<P_numtype1, P_numtype2 > > >
-operator/(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> / int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Divide<P_numtype1, int > > >
-operator/(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Divide<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> / float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Divide<P_numtype1, float > > >
-operator/(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Divide<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> / double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Divide<P_numtype1, double > > >
-operator/(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Divide<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> / long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Divide<P_numtype1, long double > > >
-operator/(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Divide<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> / complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Divide<P_numtype1, complex<T2>  > > >
-operator/(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Divide<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> / Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> / _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> / VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> / Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, int > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> / TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> / int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, int > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> / float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, float > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> / double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, double > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> / long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, long double > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> / complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Divide<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator/(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Divide<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> / Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<P_numtype1, P_numtype2 > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> / _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> / VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<P_numtype1, P_numtype2 > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> / Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_Divide<P_numtype1, int > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_Divide<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> / TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<P_numtype1, P_numtype2 > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> / int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Divide<P_numtype1, int > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Divide<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> / float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Divide<P_numtype1, float > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Divide<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> / double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Divide<P_numtype1, double > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Divide<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> / long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Divide<P_numtype1, long double > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Divide<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> / complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Divide<P_numtype1, complex<T2>  > > >
-operator/(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Divide<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range / Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<int, P_numtype2 > > >
-operator/(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range / _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<int, _bz_typename P_expr2::T_numtype > > >
-operator/(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range / VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<int, P_numtype2 > > >
-operator/(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range / Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_Divide<int, int > > >
-operator/(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_Divide<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range / TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<int, P_numtype2 > > >
-operator/(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range / float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_Divide<int, float > > >
-operator/(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_Divide<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range / double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_Divide<int, double > > >
-operator/(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_Divide<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range / long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_Divide<int, long double > > >
-operator/(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Divide<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range / complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Divide<int, complex<T2>  > > >
-operator/(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Divide<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> / Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<P_numtype1, P_numtype2 > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> / _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> / VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<P_numtype1, P_numtype2 > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> / Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_Divide<P_numtype1, int > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_Divide<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> / TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<P_numtype1, P_numtype2 > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> / int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Divide<P_numtype1, int > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Divide<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> / float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Divide<P_numtype1, float > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Divide<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> / double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Divide<P_numtype1, double > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Divide<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> / long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Divide<P_numtype1, long double > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Divide<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> / complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Divide<P_numtype1, complex<T2>  > > >
-operator/(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Divide<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int / Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<int, P_numtype2 > > >
-operator/(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int / _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<int, _bz_typename P_expr2::T_numtype > > >
-operator/(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int / VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<int, P_numtype2 > > >
-operator/(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int / TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<int, P_numtype2 > > >
-operator/(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float / Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<float, P_numtype2 > > >
-operator/(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float / _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<float, _bz_typename P_expr2::T_numtype > > >
-operator/(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float / VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<float, P_numtype2 > > >
-operator/(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float / Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_Divide<float, int > > >
-operator/(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_Divide<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float / TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<float, P_numtype2 > > >
-operator/(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double / Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<double, P_numtype2 > > >
-operator/(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double / _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<double, _bz_typename P_expr2::T_numtype > > >
-operator/(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double / VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<double, P_numtype2 > > >
-operator/(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double / Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_Divide<double, int > > >
-operator/(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_Divide<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double / TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<double, P_numtype2 > > >
-operator/(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double / Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<long double, P_numtype2 > > >
-operator/(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double / _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<long double, _bz_typename P_expr2::T_numtype > > >
-operator/(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double / VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<long double, P_numtype2 > > >
-operator/(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double / Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_Divide<long double, int > > >
-operator/(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_Divide<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double / TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<long double, P_numtype2 > > >
-operator/(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> / Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_Divide<complex<T1> , P_numtype2 > > >
-operator/(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_Divide<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> / _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_Divide<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator/(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Divide<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> / VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Divide<complex<T1> , P_numtype2 > > >
-operator/(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Divide<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> / Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_Divide<complex<T1> , int > > >
-operator/(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_Divide<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> / TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Divide<complex<T1> , P_numtype2 > > >
-operator/(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Divide<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Modulus Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> % Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Mod<P_numtype1, P_numtype2 > > >
-operator%(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> % _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Mod<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator%(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Mod<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> % VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Mod<P_numtype1, P_numtype2 > > >
-operator%(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> % Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_Mod<P_numtype1, int > > >
-operator%(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_Mod<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> % TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Mod<P_numtype1, P_numtype2 > > >
-operator%(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> % int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Mod<P_numtype1, int > > >
-operator%(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Mod<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> % Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Mod<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator%(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Mod<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> % _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Mod<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator%(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Mod<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> % VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Mod<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator%(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Mod<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> % Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_Mod<_bz_typename P_expr1::T_numtype, int > > >
-operator%(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_Mod<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> % TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Mod<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator%(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Mod<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> % int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Mod<_bz_typename P_expr1::T_numtype, int > > >
-operator%(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Mod<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> % Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Mod<P_numtype1, P_numtype2 > > >
-operator%(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> % _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Mod<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator%(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Mod<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> % VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Mod<P_numtype1, P_numtype2 > > >
-operator%(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> % Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_Mod<P_numtype1, int > > >
-operator%(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_Mod<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> % TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Mod<P_numtype1, P_numtype2 > > >
-operator%(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> % int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Mod<P_numtype1, int > > >
-operator%(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Mod<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Range % Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_Mod<int, P_numtype2 > > >
-operator%(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Mod<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range % _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Mod<int, _bz_typename P_expr2::T_numtype > > >
-operator%(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Mod<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range % VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Mod<int, P_numtype2 > > >
-operator%(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Mod<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range % Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_Mod<int, int > > >
-operator%(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_Mod<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range % TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Mod<int, P_numtype2 > > >
-operator%(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Mod<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> % Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Mod<P_numtype1, P_numtype2 > > >
-operator%(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> % _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Mod<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator%(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Mod<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> % VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Mod<P_numtype1, P_numtype2 > > >
-operator%(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> % Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_Mod<P_numtype1, int > > >
-operator%(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_Mod<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> % TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Mod<P_numtype1, P_numtype2 > > >
-operator%(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Mod<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> % int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Mod<P_numtype1, int > > >
-operator%(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Mod<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// int % Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Mod<int, P_numtype2 > > >
-operator%(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Mod<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int % _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Mod<int, _bz_typename P_expr2::T_numtype > > >
-operator%(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Mod<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int % VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Mod<int, P_numtype2 > > >
-operator%(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Mod<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int % TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Mod<int, P_numtype2 > > >
-operator%(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Mod<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-/****************************************************************************
- * Bitwise XOR Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> ^ Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseXOR<P_numtype1, P_numtype2 > > >
-operator^(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> ^ _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseXOR<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator^(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseXOR<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> ^ VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseXOR<P_numtype1, P_numtype2 > > >
-operator^(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> ^ Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_BitwiseXOR<P_numtype1, int > > >
-operator^(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_BitwiseXOR<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> ^ TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseXOR<P_numtype1, P_numtype2 > > >
-operator^(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> ^ int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseXOR<P_numtype1, int > > >
-operator^(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseXOR<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> ^ Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator^(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> ^ _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator^(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> ^ VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator^(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> ^ Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, int > > >
-operator^(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> ^ TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator^(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> ^ int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, int > > >
-operator^(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseXOR<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> ^ Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseXOR<P_numtype1, P_numtype2 > > >
-operator^(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> ^ _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseXOR<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator^(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseXOR<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> ^ VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseXOR<P_numtype1, P_numtype2 > > >
-operator^(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> ^ Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_BitwiseXOR<P_numtype1, int > > >
-operator^(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_BitwiseXOR<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> ^ TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseXOR<P_numtype1, P_numtype2 > > >
-operator^(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> ^ int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseXOR<P_numtype1, int > > >
-operator^(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseXOR<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Range ^ Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseXOR<int, P_numtype2 > > >
-operator^(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range ^ _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseXOR<int, _bz_typename P_expr2::T_numtype > > >
-operator^(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseXOR<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range ^ VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseXOR<int, P_numtype2 > > >
-operator^(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range ^ Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_BitwiseXOR<int, int > > >
-operator^(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_BitwiseXOR<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range ^ TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseXOR<int, P_numtype2 > > >
-operator^(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseXOR<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> ^ Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseXOR<P_numtype1, P_numtype2 > > >
-operator^(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> ^ _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseXOR<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator^(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseXOR<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> ^ VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseXOR<P_numtype1, P_numtype2 > > >
-operator^(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> ^ Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_BitwiseXOR<P_numtype1, int > > >
-operator^(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_BitwiseXOR<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> ^ TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseXOR<P_numtype1, P_numtype2 > > >
-operator^(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseXOR<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> ^ int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseXOR<P_numtype1, int > > >
-operator^(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseXOR<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// int ^ Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseXOR<int, P_numtype2 > > >
-operator^(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int ^ _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseXOR<int, _bz_typename P_expr2::T_numtype > > >
-operator^(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseXOR<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int ^ VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseXOR<int, P_numtype2 > > >
-operator^(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseXOR<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int ^ TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseXOR<int, P_numtype2 > > >
-operator^(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseXOR<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-/****************************************************************************
- * Bitwise And Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> & Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseAnd<P_numtype1, P_numtype2 > > >
-operator&(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> & _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseAnd<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator&(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> & VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseAnd<P_numtype1, P_numtype2 > > >
-operator&(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> & Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_BitwiseAnd<P_numtype1, int > > >
-operator&(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_BitwiseAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> & TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseAnd<P_numtype1, P_numtype2 > > >
-operator&(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> & int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseAnd<P_numtype1, int > > >
-operator&(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> & Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator&(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> & _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator&(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> & VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator&(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> & Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, int > > >
-operator&(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> & TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator&(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> & int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, int > > >
-operator&(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseAnd<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> & Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseAnd<P_numtype1, P_numtype2 > > >
-operator&(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> & _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseAnd<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator&(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> & VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseAnd<P_numtype1, P_numtype2 > > >
-operator&(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> & Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_BitwiseAnd<P_numtype1, int > > >
-operator&(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_BitwiseAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> & TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseAnd<P_numtype1, P_numtype2 > > >
-operator&(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> & int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseAnd<P_numtype1, int > > >
-operator&(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Range & Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseAnd<int, P_numtype2 > > >
-operator&(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range & _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseAnd<int, _bz_typename P_expr2::T_numtype > > >
-operator&(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseAnd<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range & VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseAnd<int, P_numtype2 > > >
-operator&(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range & Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_BitwiseAnd<int, int > > >
-operator&(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_BitwiseAnd<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range & TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseAnd<int, P_numtype2 > > >
-operator&(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> & Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseAnd<P_numtype1, P_numtype2 > > >
-operator&(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> & _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseAnd<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator&(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> & VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseAnd<P_numtype1, P_numtype2 > > >
-operator&(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> & Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_BitwiseAnd<P_numtype1, int > > >
-operator&(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_BitwiseAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> & TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseAnd<P_numtype1, P_numtype2 > > >
-operator&(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> & int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseAnd<P_numtype1, int > > >
-operator&(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// int & Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseAnd<int, P_numtype2 > > >
-operator&(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int & _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseAnd<int, _bz_typename P_expr2::T_numtype > > >
-operator&(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseAnd<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int & VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseAnd<int, P_numtype2 > > >
-operator&(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int & TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseAnd<int, P_numtype2 > > >
-operator&(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-/****************************************************************************
- * Bitwise Or Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> | Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseOr<P_numtype1, P_numtype2 > > >
-operator|(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> | _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseOr<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator|(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseOr<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> | VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseOr<P_numtype1, P_numtype2 > > >
-operator|(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> | Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_BitwiseOr<P_numtype1, int > > >
-operator|(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_BitwiseOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> | TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseOr<P_numtype1, P_numtype2 > > >
-operator|(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> | int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseOr<P_numtype1, int > > >
-operator|(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> | Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator|(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> | _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator|(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> | VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator|(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> | Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, int > > >
-operator|(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> | TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator|(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> | int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, int > > >
-operator|(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseOr<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> | Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseOr<P_numtype1, P_numtype2 > > >
-operator|(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> | _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseOr<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator|(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseOr<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> | VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseOr<P_numtype1, P_numtype2 > > >
-operator|(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> | Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_BitwiseOr<P_numtype1, int > > >
-operator|(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_BitwiseOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> | TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseOr<P_numtype1, P_numtype2 > > >
-operator|(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> | int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseOr<P_numtype1, int > > >
-operator|(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Range | Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseOr<int, P_numtype2 > > >
-operator|(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range | _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseOr<int, _bz_typename P_expr2::T_numtype > > >
-operator|(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseOr<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range | VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseOr<int, P_numtype2 > > >
-operator|(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range | Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_BitwiseOr<int, int > > >
-operator|(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_BitwiseOr<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range | TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseOr<int, P_numtype2 > > >
-operator|(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> | Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseOr<P_numtype1, P_numtype2 > > >
-operator|(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> | _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseOr<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator|(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseOr<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> | VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseOr<P_numtype1, P_numtype2 > > >
-operator|(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> | Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_BitwiseOr<P_numtype1, int > > >
-operator|(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_BitwiseOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> | TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseOr<P_numtype1, P_numtype2 > > >
-operator|(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> | int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_BitwiseOr<P_numtype1, int > > >
-operator|(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_BitwiseOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// int | Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_BitwiseOr<int, P_numtype2 > > >
-operator|(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_BitwiseOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int | _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_BitwiseOr<int, _bz_typename P_expr2::T_numtype > > >
-operator|(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_BitwiseOr<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int | VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_BitwiseOr<int, P_numtype2 > > >
-operator|(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_BitwiseOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int | TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_BitwiseOr<int, P_numtype2 > > >
-operator|(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_BitwiseOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-/****************************************************************************
- * Shift right Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> >> Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftRight<P_numtype1, P_numtype2 > > >
-operator>>(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> >> _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftRight<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator>>(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftRight<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> >> VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftRight<P_numtype1, P_numtype2 > > >
-operator>>(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> >> Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_ShiftRight<P_numtype1, int > > >
-operator>>(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_ShiftRight<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> >> TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftRight<P_numtype1, P_numtype2 > > >
-operator>>(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> >> int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_ShiftRight<P_numtype1, int > > >
-operator>>(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_ShiftRight<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> >> Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator>>(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> >> _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator>>(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> >> VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator>>(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> >> Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, int > > >
-operator>>(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> >> TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator>>(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> >> int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, int > > >
-operator>>(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_ShiftRight<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> >> Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftRight<P_numtype1, P_numtype2 > > >
-operator>>(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> >> _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftRight<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator>>(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftRight<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> >> VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftRight<P_numtype1, P_numtype2 > > >
-operator>>(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> >> Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_ShiftRight<P_numtype1, int > > >
-operator>>(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_ShiftRight<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> >> TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftRight<P_numtype1, P_numtype2 > > >
-operator>>(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> >> int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_ShiftRight<P_numtype1, int > > >
-operator>>(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_ShiftRight<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Range >> Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftRight<int, P_numtype2 > > >
-operator>>(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftRight<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range >> _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftRight<int, _bz_typename P_expr2::T_numtype > > >
-operator>>(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftRight<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range >> VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftRight<int, P_numtype2 > > >
-operator>>(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftRight<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range >> Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_ShiftRight<int, int > > >
-operator>>(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_ShiftRight<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range >> TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftRight<int, P_numtype2 > > >
-operator>>(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftRight<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> >> Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftRight<P_numtype1, P_numtype2 > > >
-operator>>(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> >> _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftRight<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator>>(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftRight<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> >> VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftRight<P_numtype1, P_numtype2 > > >
-operator>>(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> >> Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_ShiftRight<P_numtype1, int > > >
-operator>>(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_ShiftRight<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> >> TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftRight<P_numtype1, P_numtype2 > > >
-operator>>(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftRight<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> >> int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_ShiftRight<P_numtype1, int > > >
-operator>>(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_ShiftRight<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// int >> Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftRight<int, P_numtype2 > > >
-operator>>(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftRight<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int >> _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftRight<int, _bz_typename P_expr2::T_numtype > > >
-operator>>(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftRight<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int >> VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftRight<int, P_numtype2 > > >
-operator>>(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftRight<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int >> TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftRight<int, P_numtype2 > > >
-operator>>(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftRight<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-/****************************************************************************
- * Shift left Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> << Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftLeft<P_numtype1, P_numtype2 > > >
-operator<<(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> << _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftLeft<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator<<(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftLeft<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> << VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftLeft<P_numtype1, P_numtype2 > > >
-operator<<(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> << Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_ShiftLeft<P_numtype1, int > > >
-operator<<(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_ShiftLeft<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> << TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftLeft<P_numtype1, P_numtype2 > > >
-operator<<(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> << int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_ShiftLeft<P_numtype1, int > > >
-operator<<(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_ShiftLeft<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> << Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator<<(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> << _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator<<(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> << VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator<<(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> << Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, int > > >
-operator<<(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> << TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator<<(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> << int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, int > > >
-operator<<(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_ShiftLeft<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> << Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftLeft<P_numtype1, P_numtype2 > > >
-operator<<(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> << _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftLeft<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator<<(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftLeft<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> << VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftLeft<P_numtype1, P_numtype2 > > >
-operator<<(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> << Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_ShiftLeft<P_numtype1, int > > >
-operator<<(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_ShiftLeft<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> << TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftLeft<P_numtype1, P_numtype2 > > >
-operator<<(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> << int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_ShiftLeft<P_numtype1, int > > >
-operator<<(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_ShiftLeft<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Range << Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftLeft<int, P_numtype2 > > >
-operator<<(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftLeft<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range << _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftLeft<int, _bz_typename P_expr2::T_numtype > > >
-operator<<(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftLeft<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range << VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftLeft<int, P_numtype2 > > >
-operator<<(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftLeft<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range << Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_ShiftLeft<int, int > > >
-operator<<(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_ShiftLeft<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range << TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftLeft<int, P_numtype2 > > >
-operator<<(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftLeft<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> << Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftLeft<P_numtype1, P_numtype2 > > >
-operator<<(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> << _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftLeft<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator<<(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftLeft<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> << VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftLeft<P_numtype1, P_numtype2 > > >
-operator<<(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> << Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_ShiftLeft<P_numtype1, int > > >
-operator<<(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_ShiftLeft<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> << TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftLeft<P_numtype1, P_numtype2 > > >
-operator<<(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftLeft<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> << int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_ShiftLeft<P_numtype1, int > > >
-operator<<(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_ShiftLeft<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// int << Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_ShiftLeft<int, P_numtype2 > > >
-operator<<(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_ShiftLeft<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int << _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_ShiftLeft<int, _bz_typename P_expr2::T_numtype > > >
-operator<<(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_ShiftLeft<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int << VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_ShiftLeft<int, P_numtype2 > > >
-operator<<(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_ShiftLeft<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int << TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_ShiftLeft<int, P_numtype2 > > >
-operator<<(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_ShiftLeft<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-/****************************************************************************
- * Greater-than Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> > Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<P_numtype1, P_numtype2 > > >
-operator>(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> > _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator>(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> > VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<P_numtype1, P_numtype2 > > >
-operator>(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> > Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_Greater<P_numtype1, int > > >
-operator>(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_Greater<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> > TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<P_numtype1, P_numtype2 > > >
-operator>(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> > int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Greater<P_numtype1, int > > >
-operator>(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Greater<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> > float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Greater<P_numtype1, float > > >
-operator>(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Greater<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> > double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Greater<P_numtype1, double > > >
-operator>(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Greater<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> > long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Greater<P_numtype1, long double > > >
-operator>(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Greater<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> > complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Greater<P_numtype1, complex<T2>  > > >
-operator>(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Greater<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> > Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> > _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> > VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> > Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, int > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> > TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> > int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, int > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> > float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, float > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> > double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, double > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> > long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, long double > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> > complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Greater<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator>(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Greater<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> > Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<P_numtype1, P_numtype2 > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> > _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> > VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<P_numtype1, P_numtype2 > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> > Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_Greater<P_numtype1, int > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_Greater<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> > TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<P_numtype1, P_numtype2 > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> > int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Greater<P_numtype1, int > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Greater<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> > float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Greater<P_numtype1, float > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Greater<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> > double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Greater<P_numtype1, double > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Greater<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> > long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Greater<P_numtype1, long double > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Greater<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> > complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Greater<P_numtype1, complex<T2>  > > >
-operator>(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Greater<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range > Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<int, P_numtype2 > > >
-operator>(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range > _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<int, _bz_typename P_expr2::T_numtype > > >
-operator>(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range > VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<int, P_numtype2 > > >
-operator>(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range > Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_Greater<int, int > > >
-operator>(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_Greater<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range > TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<int, P_numtype2 > > >
-operator>(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range > float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_Greater<int, float > > >
-operator>(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_Greater<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range > double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_Greater<int, double > > >
-operator>(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_Greater<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range > long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_Greater<int, long double > > >
-operator>(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Greater<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range > complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Greater<int, complex<T2>  > > >
-operator>(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Greater<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> > Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<P_numtype1, P_numtype2 > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> > _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> > VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<P_numtype1, P_numtype2 > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> > Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_Greater<P_numtype1, int > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_Greater<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> > TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<P_numtype1, P_numtype2 > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> > int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Greater<P_numtype1, int > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Greater<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> > float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Greater<P_numtype1, float > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Greater<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> > double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Greater<P_numtype1, double > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Greater<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> > long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Greater<P_numtype1, long double > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Greater<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> > complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Greater<P_numtype1, complex<T2>  > > >
-operator>(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Greater<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int > Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<int, P_numtype2 > > >
-operator>(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int > _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<int, _bz_typename P_expr2::T_numtype > > >
-operator>(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int > VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<int, P_numtype2 > > >
-operator>(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int > TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<int, P_numtype2 > > >
-operator>(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float > Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<float, P_numtype2 > > >
-operator>(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float > _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<float, _bz_typename P_expr2::T_numtype > > >
-operator>(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float > VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<float, P_numtype2 > > >
-operator>(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float > Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_Greater<float, int > > >
-operator>(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_Greater<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float > TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<float, P_numtype2 > > >
-operator>(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double > Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<double, P_numtype2 > > >
-operator>(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double > _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<double, _bz_typename P_expr2::T_numtype > > >
-operator>(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double > VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<double, P_numtype2 > > >
-operator>(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double > Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_Greater<double, int > > >
-operator>(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_Greater<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double > TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<double, P_numtype2 > > >
-operator>(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double > Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<long double, P_numtype2 > > >
-operator>(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double > _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<long double, _bz_typename P_expr2::T_numtype > > >
-operator>(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double > VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<long double, P_numtype2 > > >
-operator>(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double > Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_Greater<long double, int > > >
-operator>(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_Greater<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double > TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<long double, P_numtype2 > > >
-operator>(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> > Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_Greater<complex<T1> , P_numtype2 > > >
-operator>(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_Greater<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> > _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_Greater<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator>(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Greater<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> > VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Greater<complex<T1> , P_numtype2 > > >
-operator>(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Greater<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> > Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_Greater<complex<T1> , int > > >
-operator>(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_Greater<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> > TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Greater<complex<T1> , P_numtype2 > > >
-operator>(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Greater<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Less-than Operators
- ****************************************************************************/
-
-// Vector<P_numtype1> < Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<P_numtype1, P_numtype2 > > >
-operator<(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> < _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator<(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> < VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<P_numtype1, P_numtype2 > > >
-operator<(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> < Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_Less<P_numtype1, int > > >
-operator<(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_Less<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> < TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<P_numtype1, P_numtype2 > > >
-operator<(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> < int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Less<P_numtype1, int > > >
-operator<(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Less<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> < float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Less<P_numtype1, float > > >
-operator<(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Less<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> < double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Less<P_numtype1, double > > >
-operator<(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Less<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> < long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Less<P_numtype1, long double > > >
-operator<(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Less<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> < complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Less<P_numtype1, complex<T2>  > > >
-operator<(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Less<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> < Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> < _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> < VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> < Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_Less<_bz_typename P_expr1::T_numtype, int > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> < TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> < int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Less<_bz_typename P_expr1::T_numtype, int > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> < float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Less<_bz_typename P_expr1::T_numtype, float > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> < double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Less<_bz_typename P_expr1::T_numtype, double > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> < long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Less<_bz_typename P_expr1::T_numtype, long double > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Less<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> < complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Less<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator<(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Less<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> < Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<P_numtype1, P_numtype2 > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> < _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> < VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<P_numtype1, P_numtype2 > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> < Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_Less<P_numtype1, int > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_Less<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> < TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<P_numtype1, P_numtype2 > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> < int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Less<P_numtype1, int > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Less<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> < float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Less<P_numtype1, float > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Less<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> < double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Less<P_numtype1, double > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Less<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> < long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Less<P_numtype1, long double > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Less<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> < complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Less<P_numtype1, complex<T2>  > > >
-operator<(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Less<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range < Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<int, P_numtype2 > > >
-operator<(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range < _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<int, _bz_typename P_expr2::T_numtype > > >
-operator<(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range < VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<int, P_numtype2 > > >
-operator<(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range < Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_Less<int, int > > >
-operator<(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_Less<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range < TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<int, P_numtype2 > > >
-operator<(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range < float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_Less<int, float > > >
-operator<(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_Less<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range < double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_Less<int, double > > >
-operator<(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_Less<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range < long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_Less<int, long double > > >
-operator<(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Less<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range < complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Less<int, complex<T2>  > > >
-operator<(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Less<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> < Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<P_numtype1, P_numtype2 > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> < _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> < VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<P_numtype1, P_numtype2 > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> < Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_Less<P_numtype1, int > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_Less<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> < TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<P_numtype1, P_numtype2 > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> < int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Less<P_numtype1, int > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Less<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> < float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Less<P_numtype1, float > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Less<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> < double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Less<P_numtype1, double > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Less<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> < long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Less<P_numtype1, long double > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Less<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> < complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Less<P_numtype1, complex<T2>  > > >
-operator<(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Less<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int < Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<int, P_numtype2 > > >
-operator<(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int < _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<int, _bz_typename P_expr2::T_numtype > > >
-operator<(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int < VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<int, P_numtype2 > > >
-operator<(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int < TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<int, P_numtype2 > > >
-operator<(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float < Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<float, P_numtype2 > > >
-operator<(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float < _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<float, _bz_typename P_expr2::T_numtype > > >
-operator<(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float < VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<float, P_numtype2 > > >
-operator<(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float < Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_Less<float, int > > >
-operator<(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_Less<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float < TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<float, P_numtype2 > > >
-operator<(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double < Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<double, P_numtype2 > > >
-operator<(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double < _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<double, _bz_typename P_expr2::T_numtype > > >
-operator<(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double < VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<double, P_numtype2 > > >
-operator<(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double < Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_Less<double, int > > >
-operator<(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_Less<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double < TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<double, P_numtype2 > > >
-operator<(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double < Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<long double, P_numtype2 > > >
-operator<(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double < _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<long double, _bz_typename P_expr2::T_numtype > > >
-operator<(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double < VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<long double, P_numtype2 > > >
-operator<(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double < Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_Less<long double, int > > >
-operator<(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_Less<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double < TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<long double, P_numtype2 > > >
-operator<(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> < Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_Less<complex<T1> , P_numtype2 > > >
-operator<(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_Less<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> < _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_Less<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator<(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Less<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> < VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Less<complex<T1> , P_numtype2 > > >
-operator<(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Less<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> < Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_Less<complex<T1> , int > > >
-operator<(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_Less<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> < TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Less<complex<T1> , P_numtype2 > > >
-operator<(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Less<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Greater or equal (>=) operators
- ****************************************************************************/
-
-// Vector<P_numtype1> >= Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2 > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> >= _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> >= VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2 > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> >= Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_GreaterOrEqual<P_numtype1, int > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_GreaterOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> >= TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2 > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> >= int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_GreaterOrEqual<P_numtype1, int > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_GreaterOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> >= float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_GreaterOrEqual<P_numtype1, float > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_GreaterOrEqual<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> >= double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_GreaterOrEqual<P_numtype1, double > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_GreaterOrEqual<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> >= long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_GreaterOrEqual<P_numtype1, long double > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_GreaterOrEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> >= complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_GreaterOrEqual<P_numtype1, complex<T2>  > > >
-operator>=(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_GreaterOrEqual<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> >= Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> >= _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> >= VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> >= Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, int > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> >= TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> >= int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, int > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> >= float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, float > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> >= double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, double > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> >= long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, long double > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> >= complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator>=(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_GreaterOrEqual<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> >= Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2 > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> >= _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> >= VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2 > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> >= Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_GreaterOrEqual<P_numtype1, int > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_GreaterOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> >= TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2 > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> >= int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_GreaterOrEqual<P_numtype1, int > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_GreaterOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> >= float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_GreaterOrEqual<P_numtype1, float > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_GreaterOrEqual<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> >= double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_GreaterOrEqual<P_numtype1, double > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_GreaterOrEqual<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> >= long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_GreaterOrEqual<P_numtype1, long double > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_GreaterOrEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> >= complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_GreaterOrEqual<P_numtype1, complex<T2>  > > >
-operator>=(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_GreaterOrEqual<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range >= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<int, P_numtype2 > > >
-operator>=(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range >= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<int, _bz_typename P_expr2::T_numtype > > >
-operator>=(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range >= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<int, P_numtype2 > > >
-operator>=(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range >= Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_GreaterOrEqual<int, int > > >
-operator>=(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_GreaterOrEqual<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range >= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<int, P_numtype2 > > >
-operator>=(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range >= float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_GreaterOrEqual<int, float > > >
-operator>=(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_GreaterOrEqual<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range >= double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_GreaterOrEqual<int, double > > >
-operator>=(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_GreaterOrEqual<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range >= long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_GreaterOrEqual<int, long double > > >
-operator>=(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_GreaterOrEqual<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range >= complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_GreaterOrEqual<int, complex<T2>  > > >
-operator>=(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_GreaterOrEqual<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> >= Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2 > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> >= _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> >= VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2 > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> >= Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_GreaterOrEqual<P_numtype1, int > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_GreaterOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> >= TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2 > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> >= int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_GreaterOrEqual<P_numtype1, int > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_GreaterOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> >= float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_GreaterOrEqual<P_numtype1, float > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_GreaterOrEqual<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> >= double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_GreaterOrEqual<P_numtype1, double > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_GreaterOrEqual<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> >= long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_GreaterOrEqual<P_numtype1, long double > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_GreaterOrEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> >= complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_GreaterOrEqual<P_numtype1, complex<T2>  > > >
-operator>=(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_GreaterOrEqual<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int >= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<int, P_numtype2 > > >
-operator>=(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int >= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<int, _bz_typename P_expr2::T_numtype > > >
-operator>=(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int >= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<int, P_numtype2 > > >
-operator>=(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int >= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<int, P_numtype2 > > >
-operator>=(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float >= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<float, P_numtype2 > > >
-operator>=(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float >= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<float, _bz_typename P_expr2::T_numtype > > >
-operator>=(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float >= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<float, P_numtype2 > > >
-operator>=(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float >= Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_GreaterOrEqual<float, int > > >
-operator>=(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_GreaterOrEqual<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float >= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<float, P_numtype2 > > >
-operator>=(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double >= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<double, P_numtype2 > > >
-operator>=(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double >= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<double, _bz_typename P_expr2::T_numtype > > >
-operator>=(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double >= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<double, P_numtype2 > > >
-operator>=(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double >= Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_GreaterOrEqual<double, int > > >
-operator>=(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_GreaterOrEqual<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double >= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<double, P_numtype2 > > >
-operator>=(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double >= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<long double, P_numtype2 > > >
-operator>=(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double >= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<long double, _bz_typename P_expr2::T_numtype > > >
-operator>=(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double >= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<long double, P_numtype2 > > >
-operator>=(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double >= Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_GreaterOrEqual<long double, int > > >
-operator>=(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_GreaterOrEqual<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double >= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<long double, P_numtype2 > > >
-operator>=(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> >= Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<complex<T1> , P_numtype2 > > >
-operator>=(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> >= _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_GreaterOrEqual<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator>=(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_GreaterOrEqual<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> >= VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_GreaterOrEqual<complex<T1> , P_numtype2 > > >
-operator>=(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_GreaterOrEqual<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> >= Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_GreaterOrEqual<complex<T1> , int > > >
-operator>=(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_GreaterOrEqual<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> >= TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_GreaterOrEqual<complex<T1> , P_numtype2 > > >
-operator>=(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_GreaterOrEqual<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Less or equal (<=) operators
- ****************************************************************************/
-
-// Vector<P_numtype1> <= Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<P_numtype1, P_numtype2 > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> <= _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> <= VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<P_numtype1, P_numtype2 > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> <= Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_LessOrEqual<P_numtype1, int > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_LessOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> <= TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<P_numtype1, P_numtype2 > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> <= int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LessOrEqual<P_numtype1, int > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LessOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> <= float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_LessOrEqual<P_numtype1, float > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_LessOrEqual<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> <= double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_LessOrEqual<P_numtype1, double > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_LessOrEqual<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> <= long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_LessOrEqual<P_numtype1, long double > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_LessOrEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> <= complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_LessOrEqual<P_numtype1, complex<T2>  > > >
-operator<=(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_LessOrEqual<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> <= Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> <= _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> <= VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> <= Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, int > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> <= TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> <= int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, int > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> <= float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, float > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> <= double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, double > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> <= long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, long double > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> <= complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator<=(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_LessOrEqual<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> <= Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<P_numtype1, P_numtype2 > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> <= _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> <= VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<P_numtype1, P_numtype2 > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> <= Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_LessOrEqual<P_numtype1, int > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_LessOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> <= TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<P_numtype1, P_numtype2 > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> <= int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LessOrEqual<P_numtype1, int > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LessOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> <= float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_LessOrEqual<P_numtype1, float > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_LessOrEqual<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> <= double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_LessOrEqual<P_numtype1, double > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_LessOrEqual<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> <= long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_LessOrEqual<P_numtype1, long double > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_LessOrEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> <= complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_LessOrEqual<P_numtype1, complex<T2>  > > >
-operator<=(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_LessOrEqual<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range <= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<int, P_numtype2 > > >
-operator<=(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range <= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<int, _bz_typename P_expr2::T_numtype > > >
-operator<=(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range <= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<int, P_numtype2 > > >
-operator<=(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range <= Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_LessOrEqual<int, int > > >
-operator<=(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_LessOrEqual<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range <= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<int, P_numtype2 > > >
-operator<=(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range <= float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_LessOrEqual<int, float > > >
-operator<=(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_LessOrEqual<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range <= double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_LessOrEqual<int, double > > >
-operator<=(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_LessOrEqual<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range <= long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_LessOrEqual<int, long double > > >
-operator<=(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_LessOrEqual<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range <= complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_LessOrEqual<int, complex<T2>  > > >
-operator<=(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_LessOrEqual<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> <= Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<P_numtype1, P_numtype2 > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> <= _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> <= VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<P_numtype1, P_numtype2 > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> <= Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_LessOrEqual<P_numtype1, int > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_LessOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> <= TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<P_numtype1, P_numtype2 > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> <= int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LessOrEqual<P_numtype1, int > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LessOrEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> <= float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_LessOrEqual<P_numtype1, float > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_LessOrEqual<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> <= double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_LessOrEqual<P_numtype1, double > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_LessOrEqual<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> <= long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_LessOrEqual<P_numtype1, long double > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_LessOrEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> <= complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_LessOrEqual<P_numtype1, complex<T2>  > > >
-operator<=(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_LessOrEqual<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int <= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<int, P_numtype2 > > >
-operator<=(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int <= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<int, _bz_typename P_expr2::T_numtype > > >
-operator<=(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int <= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<int, P_numtype2 > > >
-operator<=(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int <= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<int, P_numtype2 > > >
-operator<=(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float <= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<float, P_numtype2 > > >
-operator<=(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float <= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<float, _bz_typename P_expr2::T_numtype > > >
-operator<=(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float <= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<float, P_numtype2 > > >
-operator<=(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float <= Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_LessOrEqual<float, int > > >
-operator<=(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_LessOrEqual<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float <= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<float, P_numtype2 > > >
-operator<=(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double <= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<double, P_numtype2 > > >
-operator<=(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double <= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<double, _bz_typename P_expr2::T_numtype > > >
-operator<=(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double <= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<double, P_numtype2 > > >
-operator<=(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double <= Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_LessOrEqual<double, int > > >
-operator<=(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_LessOrEqual<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double <= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<double, P_numtype2 > > >
-operator<=(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double <= Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<long double, P_numtype2 > > >
-operator<=(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double <= _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<long double, _bz_typename P_expr2::T_numtype > > >
-operator<=(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double <= VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<long double, P_numtype2 > > >
-operator<=(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double <= Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_LessOrEqual<long double, int > > >
-operator<=(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_LessOrEqual<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double <= TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<long double, P_numtype2 > > >
-operator<=(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> <= Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_LessOrEqual<complex<T1> , P_numtype2 > > >
-operator<=(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_LessOrEqual<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> <= _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_LessOrEqual<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator<=(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LessOrEqual<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> <= VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LessOrEqual<complex<T1> , P_numtype2 > > >
-operator<=(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LessOrEqual<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> <= Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_LessOrEqual<complex<T1> , int > > >
-operator<=(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_LessOrEqual<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> <= TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LessOrEqual<complex<T1> , P_numtype2 > > >
-operator<=(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LessOrEqual<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Equality operators
- ****************************************************************************/
-
-// Vector<P_numtype1> == Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<P_numtype1, P_numtype2 > > >
-operator==(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> == _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator==(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> == VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<P_numtype1, P_numtype2 > > >
-operator==(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> == Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_Equal<P_numtype1, int > > >
-operator==(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_Equal<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> == TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<P_numtype1, P_numtype2 > > >
-operator==(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> == int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Equal<P_numtype1, int > > >
-operator==(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Equal<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> == float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Equal<P_numtype1, float > > >
-operator==(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Equal<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> == double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Equal<P_numtype1, double > > >
-operator==(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Equal<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> == long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Equal<P_numtype1, long double > > >
-operator==(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Equal<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> == complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Equal<P_numtype1, complex<T2>  > > >
-operator==(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Equal<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> == Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> == _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> == VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> == Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, int > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> == TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> == int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, int > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> == float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, float > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> == double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, double > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> == long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, long double > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> == complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Equal<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator==(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Equal<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> == Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<P_numtype1, P_numtype2 > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> == _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> == VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<P_numtype1, P_numtype2 > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> == Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_Equal<P_numtype1, int > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_Equal<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> == TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<P_numtype1, P_numtype2 > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> == int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Equal<P_numtype1, int > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Equal<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> == float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Equal<P_numtype1, float > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Equal<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> == double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Equal<P_numtype1, double > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Equal<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> == long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Equal<P_numtype1, long double > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Equal<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> == complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Equal<P_numtype1, complex<T2>  > > >
-operator==(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Equal<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range == Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<int, P_numtype2 > > >
-operator==(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range == _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<int, _bz_typename P_expr2::T_numtype > > >
-operator==(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range == VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<int, P_numtype2 > > >
-operator==(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range == Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_Equal<int, int > > >
-operator==(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_Equal<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range == TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<int, P_numtype2 > > >
-operator==(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range == float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_Equal<int, float > > >
-operator==(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_Equal<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range == double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_Equal<int, double > > >
-operator==(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_Equal<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range == long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_Equal<int, long double > > >
-operator==(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Equal<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range == complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Equal<int, complex<T2>  > > >
-operator==(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Equal<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> == Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<P_numtype1, P_numtype2 > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> == _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> == VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<P_numtype1, P_numtype2 > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> == Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_Equal<P_numtype1, int > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_Equal<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> == TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<P_numtype1, P_numtype2 > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> == int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_Equal<P_numtype1, int > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_Equal<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> == float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_Equal<P_numtype1, float > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_Equal<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> == double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_Equal<P_numtype1, double > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_Equal<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> == long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_Equal<P_numtype1, long double > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_Equal<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> == complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_Equal<P_numtype1, complex<T2>  > > >
-operator==(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_Equal<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int == Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<int, P_numtype2 > > >
-operator==(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int == _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<int, _bz_typename P_expr2::T_numtype > > >
-operator==(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int == VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<int, P_numtype2 > > >
-operator==(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int == TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<int, P_numtype2 > > >
-operator==(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float == Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<float, P_numtype2 > > >
-operator==(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float == _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<float, _bz_typename P_expr2::T_numtype > > >
-operator==(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float == VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<float, P_numtype2 > > >
-operator==(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float == Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_Equal<float, int > > >
-operator==(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_Equal<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float == TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<float, P_numtype2 > > >
-operator==(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double == Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<double, P_numtype2 > > >
-operator==(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double == _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<double, _bz_typename P_expr2::T_numtype > > >
-operator==(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double == VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<double, P_numtype2 > > >
-operator==(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double == Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_Equal<double, int > > >
-operator==(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_Equal<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double == TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<double, P_numtype2 > > >
-operator==(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double == Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<long double, P_numtype2 > > >
-operator==(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double == _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<long double, _bz_typename P_expr2::T_numtype > > >
-operator==(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double == VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<long double, P_numtype2 > > >
-operator==(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double == Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_Equal<long double, int > > >
-operator==(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_Equal<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double == TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<long double, P_numtype2 > > >
-operator==(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> == Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_Equal<complex<T1> , P_numtype2 > > >
-operator==(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_Equal<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> == _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_Equal<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator==(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_Equal<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> == VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_Equal<complex<T1> , P_numtype2 > > >
-operator==(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_Equal<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> == Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_Equal<complex<T1> , int > > >
-operator==(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_Equal<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> == TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_Equal<complex<T1> , P_numtype2 > > >
-operator==(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_Equal<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Not-equal operators
- ****************************************************************************/
-
-// Vector<P_numtype1> != Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<P_numtype1, P_numtype2 > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> != _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> != VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<P_numtype1, P_numtype2 > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> != Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_NotEqual<P_numtype1, int > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_NotEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> != TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<P_numtype1, P_numtype2 > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> != int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_NotEqual<P_numtype1, int > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_NotEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Vector<P_numtype1> != float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_NotEqual<P_numtype1, float > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_NotEqual<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Vector<P_numtype1> != double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_NotEqual<P_numtype1, double > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_NotEqual<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Vector<P_numtype1> != long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_NotEqual<P_numtype1, long double > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_NotEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Vector<P_numtype1> != complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_NotEqual<P_numtype1, complex<T2>  > > >
-operator!=(const Vector<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_NotEqual<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// _bz_VecExpr<P_expr1> != Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> != _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> != VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> != Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, int > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> != TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> != int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, int > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> != float
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, float > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> != double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, double > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> != long double
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, long double > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// _bz_VecExpr<P_expr1> != complex<T2>
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, complex<T2>  > > >
-operator!=(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_NotEqual<_bz_typename P_expr1::T_numtype, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// VectorPick<P_numtype1> != Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<P_numtype1, P_numtype2 > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> != _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> != VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<P_numtype1, P_numtype2 > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> != Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_NotEqual<P_numtype1, int > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_NotEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> != TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<P_numtype1, P_numtype2 > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> != int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_NotEqual<P_numtype1, int > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_NotEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> != float
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>,
-      _bz_NotEqual<P_numtype1, float > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_NotEqual<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// VectorPick<P_numtype1> != double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>,
-      _bz_NotEqual<P_numtype1, double > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_NotEqual<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// VectorPick<P_numtype1> != long double
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_NotEqual<P_numtype1, long double > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_NotEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// VectorPick<P_numtype1> != complex<T2>
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_NotEqual<P_numtype1, complex<T2>  > > >
-operator!=(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_NotEqual<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// Range != Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<int, P_numtype2 > > >
-operator!=(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range != _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<int, _bz_typename P_expr2::T_numtype > > >
-operator!=(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range != VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<int, P_numtype2 > > >
-operator!=(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range != Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_NotEqual<int, int > > >
-operator!=(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_NotEqual<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range != TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<int, P_numtype2 > > >
-operator!=(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range != float
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>,
-      _bz_NotEqual<int, float > > >
-operator!=(Range d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_NotEqual<int, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// Range != double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>,
-      _bz_NotEqual<int, double > > >
-operator!=(Range d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_NotEqual<int, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// Range != long double
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>,
-      _bz_NotEqual<int, long double > > >
-operator!=(Range d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_NotEqual<int, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// Range != complex<T2>
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_NotEqual<int, complex<T2>  > > >
-operator!=(Range d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_NotEqual<int, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// TinyVector<P_numtype1, N_length1> != Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<P_numtype1, P_numtype2 > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> != _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> != VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<P_numtype1, P_numtype2 > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> != Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_NotEqual<P_numtype1, int > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_NotEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> != TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<P_numtype1, P_numtype2 > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> != int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_NotEqual<P_numtype1, int > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_NotEqual<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> != float
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>,
-      _bz_NotEqual<P_numtype1, float > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_NotEqual<P_numtype1, float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> != double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>,
-      _bz_NotEqual<P_numtype1, double > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_NotEqual<P_numtype1, double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2)));
-}
-
-// TinyVector<P_numtype1, N_length1> != long double
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>,
-      _bz_NotEqual<P_numtype1, long double > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_NotEqual<P_numtype1, long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2)));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// TinyVector<P_numtype1, N_length1> != complex<T2>
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > ,
-      _bz_NotEqual<P_numtype1, complex<T2>  > > >
-operator!=(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_NotEqual<P_numtype1, complex<T2> > > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-
-// int != Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<int, P_numtype2 > > >
-operator!=(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int != _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<int, _bz_typename P_expr2::T_numtype > > >
-operator!=(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int != VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<int, P_numtype2 > > >
-operator!=(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int != TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<int, P_numtype2 > > >
-operator!=(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// float != Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<float, P_numtype2 > > >
-operator!=(float d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float != _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<float, _bz_typename P_expr2::T_numtype > > >
-operator!=(float d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<float, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float != VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<float, P_numtype2 > > >
-operator!=(float d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// float != Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range,
-      _bz_NotEqual<float, int > > >
-operator!=(float d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      Range, 
-      _bz_NotEqual<float, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2));
-}
-
-// float != TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<float, P_numtype2 > > >
-operator!=(float d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<float, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<float>(d1), 
-      d2.begin()));
-}
-
-// double != Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<double, P_numtype2 > > >
-operator!=(double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double != _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<double, _bz_typename P_expr2::T_numtype > > >
-operator!=(double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double != VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<double, P_numtype2 > > >
-operator!=(double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// double != Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range,
-      _bz_NotEqual<double, int > > >
-operator!=(double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      Range, 
-      _bz_NotEqual<double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2));
-}
-
-// double != TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<double, P_numtype2 > > >
-operator!=(double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<double>(d1), 
-      d2.begin()));
-}
-
-// long double != Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<long double, P_numtype2 > > >
-operator!=(long double d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double != _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<long double, _bz_typename P_expr2::T_numtype > > >
-operator!=(long double d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<long double, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double != VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<long double, P_numtype2 > > >
-operator!=(long double d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-
-// long double != Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range,
-      _bz_NotEqual<long double, int > > >
-operator!=(long double d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      Range, 
-      _bz_NotEqual<long double, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2));
-}
-
-// long double != TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<long double, P_numtype2 > > >
-operator!=(long double d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<long double, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<long double>(d1), 
-      d2.begin()));
-}
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> != Vector<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>,
-      _bz_NotEqual<complex<T1> , P_numtype2 > > >
-operator!=(complex<T1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorIterConst<P_numtype2>, 
-      _bz_NotEqual<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> != _bz_VecExpr<P_expr2>
-template<class T1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>,
-      _bz_NotEqual<complex<T1> , _bz_typename P_expr2::T_numtype > > >
-operator!=(complex<T1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      _bz_VecExpr<P_expr2>, 
-      _bz_NotEqual<complex<T1> , _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> != VectorPick<P_numtype2>
-template<class T1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>,
-      _bz_NotEqual<complex<T1> , P_numtype2 > > >
-operator!=(complex<T1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_NotEqual<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> != Range
-template<class T1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range,
-      _bz_NotEqual<complex<T1> , int > > >
-operator!=(complex<T1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      Range, 
-      _bz_NotEqual<complex<T1> , int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2));
-}
-#endif // BZ_HAVE_COMPLEX
-
-#ifdef BZ_HAVE_COMPLEX
-
-// complex<T1> != TinyVector<P_numtype2, N_length2>
-template<class T1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_NotEqual<complex<T1> , P_numtype2 > > >
-operator!=(complex<T1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<complex<T1> > , 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_NotEqual<complex<T1> , P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<complex<T1> > (d1), 
-      d2.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-/****************************************************************************
- * Logical AND operators
- ****************************************************************************/
-
-// Vector<P_numtype1> && Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalAnd<P_numtype1, P_numtype2 > > >
-operator&&(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> && _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalAnd<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator&&(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> && VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalAnd<P_numtype1, P_numtype2 > > >
-operator&&(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> && Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_LogicalAnd<P_numtype1, int > > >
-operator&&(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_LogicalAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> && TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalAnd<P_numtype1, P_numtype2 > > >
-operator&&(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> && int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LogicalAnd<P_numtype1, int > > >
-operator&&(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LogicalAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> && Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator&&(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> && _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator&&(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> && VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator&&(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> && Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, int > > >
-operator&&(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> && TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator&&(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> && int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, int > > >
-operator&&(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LogicalAnd<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> && Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalAnd<P_numtype1, P_numtype2 > > >
-operator&&(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> && _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalAnd<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator&&(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> && VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalAnd<P_numtype1, P_numtype2 > > >
-operator&&(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> && Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_LogicalAnd<P_numtype1, int > > >
-operator&&(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_LogicalAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> && TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalAnd<P_numtype1, P_numtype2 > > >
-operator&&(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> && int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LogicalAnd<P_numtype1, int > > >
-operator&&(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LogicalAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Range && Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalAnd<int, P_numtype2 > > >
-operator&&(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range && _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalAnd<int, _bz_typename P_expr2::T_numtype > > >
-operator&&(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalAnd<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range && VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalAnd<int, P_numtype2 > > >
-operator&&(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range && Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_LogicalAnd<int, int > > >
-operator&&(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_LogicalAnd<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range && TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalAnd<int, P_numtype2 > > >
-operator&&(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> && Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalAnd<P_numtype1, P_numtype2 > > >
-operator&&(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> && _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalAnd<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator&&(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalAnd<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> && VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalAnd<P_numtype1, P_numtype2 > > >
-operator&&(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> && Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_LogicalAnd<P_numtype1, int > > >
-operator&&(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_LogicalAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> && TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalAnd<P_numtype1, P_numtype2 > > >
-operator&&(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalAnd<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> && int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LogicalAnd<P_numtype1, int > > >
-operator&&(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LogicalAnd<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// int && Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalAnd<int, P_numtype2 > > >
-operator&&(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int && _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalAnd<int, _bz_typename P_expr2::T_numtype > > >
-operator&&(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalAnd<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int && VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalAnd<int, P_numtype2 > > >
-operator&&(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int && TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalAnd<int, P_numtype2 > > >
-operator&&(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalAnd<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-/****************************************************************************
- * Logical OR operators
- ****************************************************************************/
-
-// Vector<P_numtype1> || Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalOr<P_numtype1, P_numtype2 > > >
-operator||(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> || _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalOr<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator||(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalOr<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> || VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalOr<P_numtype1, P_numtype2 > > >
-operator||(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> || Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range,
-      _bz_LogicalOr<P_numtype1, int > > >
-operator||(const Vector<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_LogicalOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// Vector<P_numtype1> || TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalOr<P_numtype1, P_numtype2 > > >
-operator||(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// Vector<P_numtype1> || int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LogicalOr<P_numtype1, int > > >
-operator||(const Vector<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LogicalOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// _bz_VecExpr<P_expr1> || Vector<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator||(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> || _bz_VecExpr<P_expr2>
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype > > >
-operator||(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> || VectorPick<P_numtype2>
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator||(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> || Range
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range,
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, int > > >
-operator||(_bz_VecExpr<P_expr1> d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// _bz_VecExpr<P_expr1> || TinyVector<P_numtype2, N_length2>
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, P_numtype2 > > >
-operator||(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// _bz_VecExpr<P_expr1> || int
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, int > > >
-operator||(_bz_VecExpr<P_expr1> d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LogicalOr<_bz_typename P_expr1::T_numtype, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// VectorPick<P_numtype1> || Vector<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalOr<P_numtype1, P_numtype2 > > >
-operator||(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> || _bz_VecExpr<P_expr2>
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalOr<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator||(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalOr<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> || VectorPick<P_numtype2>
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalOr<P_numtype1, P_numtype2 > > >
-operator||(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> || Range
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range,
-      _bz_LogicalOr<P_numtype1, int > > >
-operator||(const VectorPick<P_numtype1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_LogicalOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// VectorPick<P_numtype1> || TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalOr<P_numtype1, P_numtype2 > > >
-operator||(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// VectorPick<P_numtype1> || int
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LogicalOr<P_numtype1, int > > >
-operator||(const VectorPick<P_numtype1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LogicalOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// Range || Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalOr<int, P_numtype2 > > >
-operator||(Range d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range || _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalOr<int, _bz_typename P_expr2::T_numtype > > >
-operator||(Range d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalOr<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range || VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalOr<int, P_numtype2 > > >
-operator||(Range d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// Range || Range
-
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      Range,
-      _bz_LogicalOr<int, int > > >
-operator||(Range d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      Range, 
-      _bz_LogicalOr<int, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2));
-}
-
-// Range || TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalOr<int, P_numtype2 > > >
-operator||(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> || Vector<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalOr<P_numtype1, P_numtype2 > > >
-operator||(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> || _bz_VecExpr<P_expr2>
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalOr<P_numtype1, _bz_typename P_expr2::T_numtype > > >
-operator||(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalOr<P_numtype1, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> || VectorPick<P_numtype2>
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalOr<P_numtype1, P_numtype2 > > >
-operator||(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> || Range
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range,
-      _bz_LogicalOr<P_numtype1, int > > >
-operator||(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_LogicalOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2));
-}
-
-// TinyVector<P_numtype1, N_length1> || TinyVector<P_numtype2, N_length2>
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalOr<P_numtype1, P_numtype2 > > >
-operator||(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalOr<P_numtype1, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin()));
-}
-
-// TinyVector<P_numtype1, N_length1> || int
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>,
-      _bz_LogicalOr<P_numtype1, int > > >
-operator||(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2)
-{
-    typedef _bz_VecExprOp<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_LogicalOr<P_numtype1, int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2)));
-}
-
-// int || Vector<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>,
-      _bz_LogicalOr<int, P_numtype2 > > >
-operator||(int d1, 
-      const Vector<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_LogicalOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int || _bz_VecExpr<P_expr2>
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>,
-      _bz_LogicalOr<int, _bz_typename P_expr2::T_numtype > > >
-operator||(int d1, 
-      _bz_VecExpr<P_expr2> d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_LogicalOr<int, _bz_typename P_expr2::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2));
-}
-
-// int || VectorPick<P_numtype2>
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>,
-      _bz_LogicalOr<int, P_numtype2 > > >
-operator||(int d1, 
-      const VectorPick<P_numtype2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_LogicalOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-
-// int || TinyVector<P_numtype2, N_length2>
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>,
-      _bz_LogicalOr<int, P_numtype2 > > >
-operator||(int d1, 
-      const TinyVector<P_numtype2, N_length2>& d2)
-{
-    typedef _bz_VecExprOp<_bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_LogicalOr<int, P_numtype2> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(_bz_VecExprConstant<int>(d1), 
-      d2.begin()));
-}
-BZ_NAMESPACE_END
-
-#endif
diff --git a/weave/blitz-20001213/blitz/veccount.cc b/weave/blitz-20001213/blitz/veccount.cc
deleted file mode 100644
index f145399..0000000
--- a/weave/blitz-20001213/blitz/veccount.cc
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_VECCOUNT_CC
-#define BZ_VECCOUNT_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/veccount.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr>
-inline int _bz_vec_count(P_expr vector)
-{
-    int length = vector._bz_suggestLength();
-    int count = 0;
-
-    if (vector._bz_hasFastAccess())
-    {
-        for (int i=0; i < length; ++i)
-            if (vector._bz_fastAccess(i))
-                ++count;
-    }
-    else {
-        for (int i=0; i < length; ++i)
-            if (vector[i])
-                ++count;
-    }
-
-    return count;
-}
-
-template<class P_numtype>
-inline int count(const Vector<P_numtype>& x)
-{
-    return _bz_vec_count(x._bz_asVecExpr());
-}
-
-template<class P_expr>
-inline int count(_bz_VecExpr<P_expr> expr)
-{
-    return _bz_vec_count(expr);
-}
-
-template<class P_numtype>
-inline int count(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_count(x._bz_asVecExpr());
-}
-
-template<class P_numtype, int N_dimensions>
-inline int count(const TinyVector<P_numtype, N_dimensions>& x)
-{
-    return _bz_vec_count(x._bz_asVecExpr());
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECCOUNT_CC
-
diff --git a/weave/blitz-20001213/blitz/vecdelta.cc b/weave/blitz-20001213/blitz/vecdelta.cc
deleted file mode 100644
index 4aa2351..0000000
--- a/weave/blitz-20001213/blitz/vecdelta.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECDELTA_CC
-#define BZ_VECDELTA_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecdelta.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P>
-inline
-Vector<BZ_DIFFTYPE(_bz_typename P::T_numtype)> _bz_vec_delta(P expr)
-{
-    typedef _bz_typename P::T_numtype   T_numtype;
-    typedef BZ_DIFFTYPE(T_numtype)      T_difftype;
-
-    int length = expr._bz_suggestLength();
-    Vector<T_difftype> z(length);
-    T_numtype currentElement = 0;
-    T_numtype previousElement = 0;
-
-    if (expr._bz_hasFastAccess())
-    {
-        for (int i=0; i < length; ++i)
-        {
-            currentElement = expr._bz_fastAccess(i);
-            z[i] = currentElement - previousElement;
-            previousElement = currentElement;
-        }
-    }
-    else {
-        for (int i=1; i < length; ++i)
-        {
-            currentElement = expr(i);
-            z[i] = currentElement - previousElement;
-            previousElement = currentElement;
-        }
-    }
-
-    return z;
-}
-
-template<class P_numtype>
-Vector<BZ_DIFFTYPE(P_numtype)> delta(const Vector<P_numtype>& x)
-{
-    return _bz_vec_delta(x);
-}
-
-// delta(expr)
-template<class P_expr>
-Vector<BZ_DIFFTYPE(_bz_typename P_expr::T_numtype)> delta(_bz_VecExpr<P_expr> x)
-{
-    return _bz_vec_delta(x);
-}
-
-// delta(vecpick)
-template<class P_numtype>
-Vector<BZ_DIFFTYPE(P_numtype)> delta(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_delta(x);
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECDELTA_CC
-
diff --git a/weave/blitz-20001213/blitz/vecdot.cc b/weave/blitz-20001213/blitz/vecdot.cc
deleted file mode 100644
index 10f36a2..0000000
--- a/weave/blitz-20001213/blitz/vecdot.cc
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECDOT_CC
-#define BZ_VECDOT_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecdot.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P1, class P2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(_bz_typename P1::T_numtype, _bz_typename P2::T_numtype))
-_bz_dot(P1 vector1, P2 vector2)
-{
-    BZPRECONDITION(vector1._bz_suggestLength() == vector2._bz_suggestLength());
-
-    typedef BZ_SUMTYPE(BZ_PROMOTE(_bz_typename P1::T_numtype,
-        _bz_typename P2::T_numtype))  T_sumtype;
-
-    T_sumtype sum = 0;
-    int length = vector1._bz_suggestLength();
-
-    if (vector1._bz_hasFastAccess() && vector2._bz_hasFastAccess())
-    {
-        for (int i=0; i < length; ++i)
-            sum += vector1._bz_fastAccess(i) 
-                * vector2._bz_fastAccess(i);
-    }
-    else {
-        for (int i=0; i < length; ++i)
-            sum += vector1[i] * vector2[i];
-    }
-
-    return sum;
-}
-
-
-// dot()
-template<class P_numtype1, class P_numtype2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(P_numtype1,P_numtype2))
-dot(const Vector<P_numtype1>& a, const Vector<P_numtype2>& b)
-{
-    return _bz_dot(a, b);
-}
-
-// dot(expr,expr)
-template<class P_expr1, class P_expr2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(_bz_typename P_expr1::T_numtype,
-    _bz_typename P_expr2::T_numtype))
-dot(_bz_VecExpr<P_expr1> expr1, _bz_VecExpr<P_expr2> expr2)
-{
-    return _bz_dot(expr1, expr2);
-}
-
-// dot(expr,vec)
-template<class P_expr1, class P_numtype2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(_bz_typename P_expr1::T_numtype, P_numtype2))
-dot(_bz_VecExpr<P_expr1> expr1, const Vector<P_numtype2>& vector2)
-{
-    return _bz_dot(vector2, expr1);
-}
-
-// dot(vec,expr)
-template<class P_numtype1, class P_expr2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(P_numtype1, _bz_typename P_expr2::T_numtype))
-dot(const Vector<P_numtype1>& vector1, _bz_VecExpr<P_expr2> expr2)
-{
-    return _bz_dot(vector1, expr2);
-}
-
-// dot(vec,vecpick)
-template<class P_numtype1, class P_numtype2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(P_numtype1, P_numtype2))
-dot(const Vector<P_numtype1>& vector1, const VectorPick<P_numtype2>& vector2)
-{
-    return _bz_dot(vector1, vector2);
-}
-
-// dot(vecpick,vec)
-template<class P_numtype1, class P_numtype2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(P_numtype1, P_numtype2))
-dot(const VectorPick<P_numtype1>& vector1, const Vector<P_numtype2>& vector2)
-{
-    return _bz_dot(vector1, vector2);
-}
-
-// dot(vecpick,vecpick)
-template<class P_numtype1, class P_numtype2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(P_numtype1, P_numtype2))
-dot(const VectorPick<P_numtype1>& vector1, const VectorPick<P_numtype2>& vector2)
-{
-    return _bz_dot(vector1, vector2);
-}
-
-// dot(expr, vecpick)
-template<class P_expr1, class P_numtype2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(_bz_typename P_expr1::T_numtype, P_numtype2))
-dot(_bz_VecExpr<P_expr1> expr1, const VectorPick<P_numtype2>& vector2)
-{
-    return _bz_dot(expr1, vector2);
-}
-
-// dot(vecpick, expr)
-template<class P_numtype1, class P_expr2>
-inline
-BZ_SUMTYPE(BZ_PROMOTE(P_numtype1, _bz_typename P_expr2::T_numtype))
-dot(const VectorPick<P_numtype1>& vector1, _bz_VecExpr<P_expr2> expr2)
-{
-    return _bz_dot(vector1, expr2);
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECDOT_CC
-
diff --git a/weave/blitz-20001213/blitz/vecexpr.h b/weave/blitz-20001213/blitz/vecexpr.h
deleted file mode 100644
index 8e4dbf9..0000000
--- a/weave/blitz-20001213/blitz/vecexpr.h
+++ /dev/null
@@ -1,298 +0,0 @@
-/***************************************************************************
- * blitz/vecexpr.h      Vector<P_numtype> expression templates
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.6  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.5  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.4  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-
-#ifndef BZ_VECEXPR_H
-#define BZ_VECEXPR_H
-
-#ifndef BZ_VECTOR_H
- #include <blitz/vector.h>
-#endif
-
-#ifndef BZ_APPLICS_H
- #include <blitz/applics.h>
-#endif
-
-#ifndef BZ_META_METAPROG_H
- #include <blitz/meta/metaprog.h>
-#endif
-
-#ifndef BZ_VECEXPRWRAP_H
- #include <blitz/vecexprwrap.h>           // _bz_VecExpr wrapper class
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr1, class P_expr2, class P_op>
-class _bz_VecExprOp {
-
-public:
-    typedef P_expr1 T_expr1;
-    typedef P_expr2 T_expr2;
-    typedef _bz_typename T_expr1::T_numtype T_numtype1;
-    typedef _bz_typename T_expr2::T_numtype T_numtype2;
-    typedef BZ_PROMOTE(T_numtype1, T_numtype2) T_numtype;
-    typedef P_op    T_op;
-
-#ifdef BZ_PASS_EXPR_BY_VALUE
-    _bz_VecExprOp(T_expr1 a, T_expr2 b)
-        : iter1_(a), iter2_(b)
-    { }
-#else
-    _bz_VecExprOp(const T_expr1& a, const T_expr2& b)
-        : iter1_(a), iter2_(b)
-    { }
-#endif
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    _bz_VecExprOp(const _bz_VecExprOp<P_expr1, P_expr2, P_op>& x)
-        : iter1_(x.iter1_), iter2_(x.iter2_)
-    { }
-#endif
-
-    T_numtype operator[](int i) const
-    { return T_op::apply(iter1_[i], iter2_[i]); }
-
-    T_numtype operator()(int i) const
-    { return T_op::apply(iter1_(i), iter2_(i)); }
-
-    int length(int recommendedLength) const
-    { 
-        BZPRECONDITION(iter2_.length(recommendedLength) == 
-            iter1_.length(recommendedLength));
-        return iter1_.length(recommendedLength); 
-    }
-
-    enum { 
-           _bz_staticLengthCount = 
-      BZ_ENUM_CAST(P_expr1::_bz_staticLengthCount) 
-         + BZ_ENUM_CAST(P_expr2::_bz_staticLengthCount),
-
-           _bz_dynamicLengthCount = 
-      BZ_ENUM_CAST(P_expr1::_bz_dynamicLengthCount) 
-        + BZ_ENUM_CAST(P_expr2::_bz_dynamicLengthCount),
-
-           _bz_staticLength = (BZ_ENUM_CAST(P_expr1::_bz_staticLength) > BZ_ENUM_CAST(P_expr2::_bz_staticLength)) ? BZ_ENUM_CAST(P_expr1::_bz_staticLength) : BZ_ENUM_CAST(P_expr2::_bz_staticLength)
-
-//      _bz_meta_max<P_expr1::_bz_staticLength, P_expr2::_bz_staticLength>::max 
-    };
-
-    int _bz_suggestLength() const
-    {
-        int length1 = iter1_._bz_suggestLength();
-        if (length1 != 0)
-            return length1;
-        return iter2_._bz_suggestLength();
-    }
-
-    _bz_bool  _bz_hasFastAccess() const
-    { return iter1_._bz_hasFastAccess() && iter2_._bz_hasFastAccess(); }
-
-    T_numtype _bz_fastAccess(int i) const
-    { 
-        return T_op::apply(iter1_._bz_fastAccess(i),
-            iter2_._bz_fastAccess(i)); 
-    }
-    
-private:
-    _bz_VecExprOp();
-
-    T_expr1 iter1_;
-    T_expr2 iter2_;
-};
-
-template<class P_expr, class P_unaryOp>
-class _bz_VecExprUnaryOp {
-
-public:
-    typedef P_expr T_expr;
-    typedef P_unaryOp T_unaryOp;
-    typedef _bz_typename T_unaryOp::T_numtype T_numtype;
-
-#ifdef BZ_PASS_EXPR_BY_VALUE
-    _bz_VecExprUnaryOp(T_expr iter)
-        : iter_(iter)
-    { }
-#else
-    _bz_VecExprUnaryOp(const T_expr& iter)
-        : iter_(iter)
-    { }
-#endif
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    _bz_VecExprUnaryOp(const _bz_VecExprUnaryOp<P_expr, P_unaryOp>& x)
-        : iter_(x.iter_)
-    { }
-#endif
-
-    T_numtype operator[](int i) const
-    { return T_unaryOp::apply(iter_[i]); }
-
-    T_numtype operator()(int i) const
-    { return T_unaryOp::apply(iter_(i)); }
-
-    int length(int recommendedLength) const
-    { return iter_.length(recommendedLength); }
-
-    enum { _bz_staticLengthCount = BZ_ENUM_CAST(P_expr::_bz_staticLengthCount),
-           _bz_dynamicLengthCount =BZ_ENUM_CAST(P_expr::_bz_dynamicLengthCount),
-           _bz_staticLength = BZ_ENUM_CAST(P_expr::_bz_staticLength) };
-
-    int _bz_suggestLength() const
-    { return iter_._bz_suggestLength(); }
-
-    _bz_bool _bz_hasFastAccess() const
-    { return iter_._bz_hasFastAccess(); }
-
-    T_numtype _bz_fastAccess(int i) const
-    { return T_unaryOp::apply(iter_._bz_fastAccess(i)); }
-
-private:
-    _bz_VecExprUnaryOp() { }
-
-    T_expr iter_;    
-};
-
-template<class P_numtype>
-class _bz_VecExprConstant {
-public:
-    typedef P_numtype T_numtype;
-
-    _bz_VecExprConstant(P_numtype value)
-        : value_(BZ_NO_PROPAGATE(value))
-    { 
-    }
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    _bz_VecExprConstant(const _bz_VecExprConstant<P_numtype>& x)
-        : value_(x.value_)
-    { }
-#endif
-
-    T_numtype operator[](int) const
-    { return value_; }
-
-    T_numtype operator()(int) const
-    { return value_; }
-
-    int length(int recommendedLength) const
-    { return recommendedLength; }
-
-    enum { _bz_staticLengthCount = 0,
-           _bz_dynamicLengthCount = 0,
-           _bz_staticLength = 0
-    };
-
-    int _bz_suggestLength() const
-    { return 0; }
-
-    _bz_bool _bz_hasFastAccess() const
-    { return 1; }
-
-    T_numtype _bz_fastAccess(int) const
-    { return value_; }
-
-private:
-
-    _bz_VecExprConstant() { }
-
-    T_numtype value_;
-};
-
-// Some miscellaneous operators that don't seem to belong anywhere else.
-
-template<class P_expr>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr>, 
-    _bz_negate<_bz_typename P_expr::T_numtype> > >
-operator-(_bz_VecExpr<P_expr> a)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr>,
-        _bz_negate<_bz_typename P_expr::T_numtype> > T_expr;
-    return _bz_VecExpr<T_expr>(T_expr(a));
-}
-
-template<class P_numtype>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype>,
-    _bz_negate<P_numtype> > >
-operator-(const Vector<P_numtype>& a)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype>,
-        _bz_negate<P_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(a.begin()));
-}
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range, _bz_negate<Range::T_numtype> > >
-operator-(Range r)
-{
-    typedef _bz_VecExprUnaryOp<Range, _bz_negate<Range::T_numtype> > T_expr;
-    
-    return _bz_VecExpr<T_expr>(T_expr(r));
-}
-
-
-// NEEDS_WORK: implement operator- for Range, VectorPick, TinyVector
-
-BZ_NAMESPACE_END
-
-#ifndef BZ_TINYVEC_H
- #include <blitz/tinyvec.h>
-#endif
-
-#include <blitz/vecbops.cc>       // Operators with two operands
-#include <blitz/vecuops.cc>       // Functions with one argument
-#include <blitz/vecbfn.cc>        // Functions with two arguments
-
-#endif // BZ_VECEXPR_H
diff --git a/weave/blitz-20001213/blitz/vecexprwrap.h b/weave/blitz-20001213/blitz/vecexprwrap.h
deleted file mode 100644
index 8cc3d14..0000000
--- a/weave/blitz-20001213/blitz/vecexprwrap.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/***************************************************************************
- * blitz/vecexprwrap.h   Vector expression templates wrapper class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:12  tveldhui
- * Imported sources
- *
- * Revision 1.2  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */
-
-#ifndef BZ_VECEXPRWRAP_H
-#define BZ_VECEXPRWRAP_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr>
-class _bz_VecExpr {
-
-public:
-    typedef P_expr T_expr;
-    typedef _bz_typename T_expr::T_numtype T_numtype;
-
-#ifdef BZ_PASS_EXPR_BY_VALUE
-    _bz_VecExpr(T_expr a)
-        : iter_(a)
-    { }
-#else
-    _bz_VecExpr(const T_expr& a)
-        : iter_(a)
-    { }
-#endif
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    _bz_VecExpr(const _bz_VecExpr<T_expr>& a)
-        : iter_(a.iter_)
-    { }
-#endif
-
-    T_numtype operator[](int i) const
-    { return iter_[i]; }
-
-    T_numtype operator()(int i) const
-    { return iter_(i); }
-
-    int length(int recommendedLength) const
-    { return iter_.length(recommendedLength); }
-
-    enum { _bz_staticLengthCount = BZ_ENUM_CAST(P_expr::_bz_staticLengthCount),
-           _bz_dynamicLengthCount = BZ_ENUM_CAST(P_expr::_bz_dynamicLengthCount),
-           _bz_staticLength = BZ_ENUM_CAST(P_expr::_bz_staticLength) };
-
-    int _bz_suggestLength() const
-    { return iter_._bz_suggestLength(); }
-
-    _bz_bool _bz_hasFastAccess() const
-    { return iter_._bz_hasFastAccess(); }
-
-    T_numtype _bz_fastAccess(int i) const
-    { return iter_._bz_fastAccess(i); }
-
-private:
-    _bz_VecExpr();
-
-    T_expr iter_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECEXPRWRAP_H
diff --git a/weave/blitz-20001213/blitz/vecglobs.cc b/weave/blitz-20001213/blitz/vecglobs.cc
deleted file mode 100644
index e304126..0000000
--- a/weave/blitz-20001213/blitz/vecglobs.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECGLOBS_CC
-#define BZ_VECGLOBS_CC
-
-#ifndef BZ_VECGLOBS_H
- #include <blitz/vecglobs.h>
-#endif
-
-#include <blitz/vecaccum.cc>    // accumulate()
-#include <blitz/vecdelta.cc>    // delta()
-#include <blitz/vecmin.cc>      // min(), minValue(), minIndex()
-#include <blitz/vecmax.cc>      // max(), maxValue(), maxIndex()
-#include <blitz/vecsum.cc>      // sum(), mean()
-#include <blitz/vecdot.cc>      // dot()
-#include <blitz/vecnorm.cc>     // norm()
-#include <blitz/vecnorm1.cc>    // norm1()
-#include <blitz/vecany.cc>      // any()
-#include <blitz/vecall.cc>      // all()
-#include <blitz/veccount.cc>    // count()
-
-#endif // BZ_VECGLOBS_CC
diff --git a/weave/blitz-20001213/blitz/vecglobs.h b/weave/blitz-20001213/blitz/vecglobs.h
deleted file mode 100644
index 2b7eac9..0000000
--- a/weave/blitz-20001213/blitz/vecglobs.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/***************************************************************************
- * blitz/vecglobs.h      Global vector functions
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_VECGLOBS_H
-#define BZ_VECGLOBS_H
-
-#ifndef BZ_VECTOR_H
- #include <blitz/vector.h>
-#endif
-
-#ifndef BZ_NUMTRAIT_H
- #include <blitz/numtrait.h>
-#endif
-
-#ifndef BZ_PROMOTE_H
- #include <blitz/promote.h>
-#endif
-
-#ifndef BZ_EXTREMUM_H
- #include <blitz/extremum.h>
-#endif
-
-
-BZ_NAMESPACE(blitz)
-
-BZ_NAMESPACE_END
-
-#include <blitz/vecglobs.cc>
-
-#endif // BZ_VECGLOBS_H
diff --git a/weave/blitz-20001213/blitz/vecio.cc b/weave/blitz-20001213/blitz/vecio.cc
deleted file mode 100644
index ffa9aef..0000000
--- a/weave/blitz-20001213/blitz/vecio.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECIO_CC
-#define BZ_VECIO_CC
-
-#ifndef BZ_VECTOR_H
- #include <blitz/vector.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// This version of operator<< is provided as a temporary measure
-// only.  It will be revised in a future release.
-// NEEDS_WORK
-
-template<class P_numtype>
-ostream& operator<<(ostream& os, const Vector<P_numtype>& x)
-{
-    os << "[ ";
-    for (int i=0; i < x.length(); ++i)
-    {
-        os << setw(10) << x[i];
-        if (!((i+1)%7))
-            os << endl << "  ";
-    }
-    os << " ]";
-    return os;
-}
-
-template<class P_expr>
-ostream& operator<<(ostream& os, _bz_VecExpr<P_expr> expr)
-{
-    Vector<_bz_typename P_expr::T_numtype> result(expr);
-    os << result;
-    return os;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECIO_CC
diff --git a/weave/blitz-20001213/blitz/veciter.h b/weave/blitz-20001213/blitz/veciter.h
deleted file mode 100644
index cf99197..0000000
--- a/weave/blitz-20001213/blitz/veciter.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/***************************************************************************
- * blitz/veciter.h      Iterator classes for Vector<P_numtype>
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.6  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.5  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.4  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-
-#ifndef BZ_VECITER_H
-#define BZ_VECITER_H
-
-#ifndef BZ_VECTOR_H
- #error <blitz/veciter.h> should be included via <blitz/vector.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Declaration of class VectorIter
-template<class P_numtype>
-class VectorIter {
-public:
-    typedef P_numtype T_numtype;
-
-    _bz_explicit VectorIter(Vector<P_numtype>& x)
-        : data_(x.data())
-    {
-        stride_ = x.stride();
-        length_ = x.length();
-    }
-
-    VectorIter(P_numtype* _bz_restrict data, int stride, int length)
-        : data_(data), stride_(stride), length_(length)
-    { }
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    VectorIter(const VectorIter<P_numtype>& x)
-    {
-        data_ = x.data_;
-        stride_ = x.stride_;
-        length_ = x.length_;
-    }
-#endif
-
-    P_numtype operator[](int i) const
-    { 
-        BZPRECONDITION(i < length_);
-        return data_[i*stride_]; 
-    }
-
-    P_numtype& _bz_restrict operator[](int i)
-    { 
-        BZPRECONDITION(i < length_);
-        return data_[i*stride_]; 
-    }
-
-    P_numtype operator()(int i) const
-    {
-        BZPRECONDITION(i < length_);
-        return data_[i*stride_];
-    }
-
-    P_numtype& _bz_restrict operator()(int i) 
-    {
-        BZPRECONDITION(i < length_);
-        return data_[i*stride_];
-    }
-
-    P_numtype operator*() const
-    { return *data_; }
-
-    P_numtype& operator*()
-    { return *data_; }
-
-    VectorIter<P_numtype> operator+(int i)
-    {
-        // NEEDS_WORK -- precondition checking?
-        return VectorIter<P_numtype>(data_+i*stride_, stride_, length_-i);
-    }
-
-    int length(int) const
-    { return length_; }
-
-    _bz_bool isUnitStride() const
-    { return (stride_ == 1); }
-
-    /////////////////////////////////////////////
-    // Library-internal member functions
-    // These are undocumented and may change or
-    // disappear in future releases.
-    /////////////////////////////////////////////
-
-    enum { _bz_staticLengthCount = 0,
-           _bz_dynamicLengthCount = 1,
-           _bz_staticLength = 0 };
-
-    _bz_bool _bz_hasFastAccess() const
-    { return isUnitStride(); }
-
-    P_numtype _bz_fastAccess(int i) const
-    { return data_[i]; }
-
-    P_numtype& _bz_restrict _bz_fastAccess(int i)
-    { return data_[i]; }
-
-    int _bz_suggestLength() const
-    { return length_; }
-
-private:
-    VectorIter() { }
-    P_numtype * _bz_restrict data_;
-    int stride_;
-    int length_;
-};
-
-
-template<class P_numtype>
-class VectorIterConst {
-public:
-    typedef P_numtype T_numtype;
-
-    _bz_explicit VectorIterConst(const Vector<P_numtype>& x)
-        : data_(x.data())
-    {
-        stride_ = x.stride();
-        length_ = x.length();
-    }
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    VectorIterConst(const VectorIterConst<P_numtype>& x)
-    {
-        data_ = x.data_;
-        stride_ = x.stride_;
-        length_ = x.length_;
-    }
-#endif
-
-    P_numtype operator[](int i) const
-    { 
-        BZPRECONDITION(i < length_);
-        return data_[i*stride_]; 
-    }
-
-    P_numtype operator()(int i) const
-    {
-        BZPRECONDITION(i < length_);
-        return data_[i*stride_];
-    }
-
-    int length(int) const
-    { return length_; }
-
-    _bz_bool isUnitStride() const
-    { return (stride_ == 1); }
-
-    /////////////////////////////////////////////
-    // Library-internal member functions
-    // These are undocumented and may change or
-    // disappear in future releases.
-    /////////////////////////////////////////////
-
-    enum { _bz_staticLengthCount = 0,
-           _bz_dynamicLengthCount = 1,
-           _bz_staticLength = 0 };
-
-    _bz_bool  _bz_hasFastAccess() const
-    { return isUnitStride(); }
-
-    P_numtype _bz_fastAccess(int i) const
-    {
-        return data_[i];
-    }
-
-    int _bz_suggestLength() const
-    { return length_; }
-
-private:
-    const P_numtype * _bz_restrict data_;
-    int stride_;
-    int length_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECITER_H
diff --git a/weave/blitz-20001213/blitz/vecmax.cc b/weave/blitz-20001213/blitz/vecmax.cc
deleted file mode 100644
index 5d3223e..0000000
--- a/weave/blitz-20001213/blitz/vecmax.cc
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECMAX_CC
-#define BZ_VECMAX_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecmax.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr>
-inline
-Extremum<_bz_typename P_expr::T_numtype, int> _bz_vec_max(P_expr vector)
-{
-    typedef _bz_typename P_expr::T_numtype T_numtype;
-
-    T_numtype maxValue = vector(0);
-    int maxIndex = 0;
-    int length = vector._bz_suggestLength();
-
-    if (vector._bz_hasFastAccess())
-    {
-        for (int i=1; i < length; ++i)
-        {
-            T_numtype value = vector._bz_fastAccess(i);
-            if (value > maxValue)
-            {
-                maxValue = value;
-                maxIndex = i;
-            }
-        }
-    }
-    else {
-        for (int i=1; i < length; ++i)
-        {
-            T_numtype value = vector(i);
-            if (value > maxValue)
-            {
-                maxValue = value;
-                maxIndex = i;
-            }
-        }
-    }
-
-    return Extremum<T_numtype, int>(maxValue, maxIndex);
-}
-
-// max(vector)
-template<class P_numtype>
-inline
-Extremum<P_numtype, int> max(const Vector<P_numtype>& x)
-{
-    return _bz_vec_max(x._bz_asVecExpr());
-}
-
-// max(expr)
-template<class P_expr>
-inline
-Extremum<_bz_typename P_expr::T_numtype,int> max(_bz_VecExpr<P_expr> x)
-{
-    return _bz_vec_max(x);
-}
-
-// max(vecpick)
-template<class P_numtype>
-inline
-Extremum<P_numtype, int> max(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_max(x._bz_asVecExpr());
-}
-
-// max(TinyVector)
-template<class P_numtype, int N_length>
-inline
-Extremum<P_numtype, int>
-max(const TinyVector<P_numtype, N_length>& x)
-{
-    return _bz_vec_max(x._bz_asVecExpr());
-}
-
-
-// maxIndex(vector)
-template<class P_numtype>
-inline
-int  maxIndex(const Vector<P_numtype>& x)
-{
-    return _bz_vec_max(x).index();
-}
-
-// maxIndex(expr)
-template<class P_expr>
-inline
-int maxIndex(_bz_VecExpr<P_expr> x)
-{
-    return _bz_vec_max(x._bz_asVecExpr()).index();
-}
-
-// maxIndex(vecpick)
-template<class P_numtype>
-int  maxIndex(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_max(x._bz_asVecExpr()).index();
-}
-
-// maxIndex(TinyVector)
-template<class P_numtype, int N_length>
-int  maxIndex(const TinyVector<P_numtype, N_length>& x)
-{
-    return _bz_vec_max(x._bz_asVecExpr()).index();
-}
-
-// maxValue(vector)
-template<class P_numtype>
-inline
-int  maxValue(const Vector<P_numtype>& x)
-{
-    return _bz_vec_max(x._bz_asVecExpr()).value();
-}
-
-// maxValue(expr)
-template<class P_expr>
-inline
-int  maxValue(_bz_VecExpr<P_expr> x)
-{
-    return _bz_vec_max(x).value();
-}
-
-// maxValue(vecpick)
-template<class P_numtype>
-int  maxValue(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_max(x._bz_asVecExpr()).value();
-}
-
-// maxValue(TinyVector)
-template<class P_numtype, int N_length>
-int  maxValue(const TinyVector<P_numtype, N_length>& x)
-{
-    return _bz_vec_max(x._bz_asVecExpr()).value();
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECMAX_CC
-
diff --git a/weave/blitz-20001213/blitz/vecmin.cc b/weave/blitz-20001213/blitz/vecmin.cc
deleted file mode 100644
index c90f857..0000000
--- a/weave/blitz-20001213/blitz/vecmin.cc
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECMIN_CC
-#define BZ_VECMIN_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecmin.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr>
-inline
-Extremum<_bz_typename P_expr::T_numtype, int> _bz_vec_min(P_expr vector)
-{
-    typedef _bz_typename P_expr::T_numtype T_numtype;
-
-    T_numtype minValue = vector(0);
-    int minIndex = 0;
-    int length = vector._bz_suggestLength();
-
-    if (vector._bz_hasFastAccess())
-    {
-        for (int i=1; i < length; ++i)
-        {
-            T_numtype value = vector._bz_fastAccess(i);
-            if (value < minValue)
-            {
-                minValue = value;
-                minIndex = i;
-            }
-        }
-    }
-    else {
-        for (int i=1; i < length; ++i)
-        {
-            T_numtype value = vector(i);
-            if (value < minValue)
-            {
-                minValue = value;
-                minIndex = i;
-            }
-        }
-    }
-
-    return Extremum<T_numtype, int>(minValue, minIndex);
-}
-
-// min(vector)
-template<class P_numtype>
-inline
-Extremum<P_numtype,int> min(const Vector<P_numtype>& x)
-{
-    return _bz_vec_min(x._bz_asVecExpr());
-}
-
-// min(expr)
-template<class P_expr>
-inline
-Extremum<_bz_typename P_expr::T_numtype,int> min(_bz_VecExpr<P_expr> x)
-{
-    return _bz_vec_min(x);
-}
-
-// min(vecpick)
-template<class P_numtype>
-inline
-Extremum<P_numtype, int> min(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_min(x._bz_asVecExpr());
-}
-
-// min(TinyVector)
-template<class P_numtype, int N_length>
-inline
-Extremum<P_numtype, int> min(const TinyVector<P_numtype, N_length>& x)
-{
-    return _bz_vec_min(x._bz_asVecExpr());
-}
-
-// minIndex(vector)
-template<class P_numtype>
-inline
-int  minIndex(const Vector<P_numtype>& x)
-{
-    return _bz_vec_min(x._bz_asVecExpr()).index();
-}
-
-// maxIndex(expr)
-template<class P_expr>
-inline
-int  minIndex(_bz_VecExpr<P_expr> x)
-{
-    return _bz_vec_min(x).index();
-}
-
-// minIndex(vecpick)
-template<class P_numtype>
-int  minIndex(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_min(x._bz_asVecExpr()).index();
-}
-
-// minIndex(TinyVector)
-template<class P_numtype, int N_length>
-int minIndex(const TinyVector<P_numtype, N_length>& x)
-{
-    return _bz_vec_min(x._bz_asVecExpr()).index();
-}
-
-// minValue(vector)
-template<class P_numtype>
-inline
-int  minValue(const Vector<P_numtype>& x)
-{
-    return _bz_vec_min(x._bz_asVecExpr()).value();
-}
-
-// minValue(expr)
-template<class P_expr>
-inline
-int  minValue(_bz_VecExpr<P_expr> x)
-{
-    return _bz_vec_min(x).value();
-}
-
-// minValue(vecpick)
-template<class P_numtype>
-int  minValue(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_min(x._bz_asVecExpr()).value();
-}
-
-// minValue(TinyVector)
-template<class P_numtype, int N_length>
-int  minValue(const TinyVector<P_numtype, N_length>& x)
-{
-    return _bz_vec_min(x._bz_asVecExpr()).value();
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECMIN_CC
-
diff --git a/weave/blitz-20001213/blitz/vecnorm.cc b/weave/blitz-20001213/blitz/vecnorm.cc
deleted file mode 100644
index a67d436..0000000
--- a/weave/blitz-20001213/blitz/vecnorm.cc
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECNORM_CC
-#define BZ_VECNORM_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecnorm.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr>
-inline
-BZ_FLOATTYPE(BZ_SUMTYPE(_bz_typename P_expr::T_numtype))
-_bz_vec_norm(P_expr vector)
-{
-    // An extreme use of traits here.  It's necessary to
-    // handle odd cases such as the norm of a Vector<char>.
-    // To avoid overflow, BZ_SUMTYPE(char) is int.
-    // To take the sqrt of the sum, BZ_FLOATTYPE(char) is float.
-    // So float is returned for Vector<char>.
-    typedef _bz_typename P_expr::T_numtype T_numtype;
-    typedef BZ_SUMTYPE(T_numtype)          T_sumtype;
-    typedef BZ_FLOATTYPE(T_sumtype)        T_floattype;
-
-    T_sumtype sum = 0;
-    int length = vector._bz_suggestLength();
-
-    if (vector._bz_hasFastAccess())
-    {
-        for (int i=0; i < length; ++i)
-        {
-            T_numtype value = vector._bz_fastAccess(i);
-            sum += value * T_sumtype(value);
-        }
-    }
-    else {
-        for (int i=0; i < length; ++i)
-        {
-            T_numtype value = vector(i);
-            sum += value * T_sumtype(value);
-        }
-    }
-
-    return _bz_sqrt<T_floattype>::apply(sum);
-}
-
-template<class P_numtype>
-inline
-BZ_FLOATTYPE(BZ_SUMTYPE(P_numtype)) norm(const Vector<P_numtype>& x)
-{
-    return _bz_vec_norm(x._bz_asVecExpr());
-}
-
-// norm(expr)
-template<class P_expr>
-inline
-BZ_FLOATTYPE(BZ_SUMTYPE(_bz_typename P_expr::T_numtype))
-norm(_bz_VecExpr<P_expr> expr)
-{
-    return _bz_vec_norm(expr);
-}
-
-// norm(vecpick)
-template<class P_numtype>
-inline
-BZ_FLOATTYPE(BZ_SUMTYPE(P_numtype))
-norm(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_norm(x._bz_asVecExpr());
-}
-
-// norm(TinyVector)
-template<class P_numtype, int N_dimensions>
-inline
-BZ_FLOATTYPE(BZ_SUMTYPE(P_numtype))
-norm(const TinyVector<P_numtype, N_dimensions>& x)
-{
-    return _bz_vec_norm(x._bz_asVecExpr());
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECNORM_CC
-
diff --git a/weave/blitz-20001213/blitz/vecnorm1.cc b/weave/blitz-20001213/blitz/vecnorm1.cc
deleted file mode 100644
index d9f6e24..0000000
--- a/weave/blitz-20001213/blitz/vecnorm1.cc
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:08  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECNORM1_CC
-#define BZ_VECNORM1_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecnorm1.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-#include <blitz/applics.h>
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr>
-inline
-BZ_SUMTYPE(_bz_typename P_expr::T_numtype)
-_bz_vec_norm1(P_expr vector)
-{
-    typedef _bz_typename P_expr::T_numtype T_numtype;
-    typedef BZ_SUMTYPE(T_numtype)          T_sumtype;
-
-    T_sumtype sum = 0;
-    int length = vector._bz_suggestLength();
-
-    if (vector._bz_hasFastAccess())
-    {
-        for (int i=0; i < length; ++i)
-            sum += _bz_abs<T_numtype>::apply(vector._bz_fastAccess(i));
-    }
-    else {
-        for (int i=0; i < length; ++i)
-            sum += _bz_abs<T_numtype>::apply(vector(i));
-    }
-
-    return sum;
-}
-
-// norm1(vector)
-template<class P_numtype>
-BZ_SUMTYPE(P_numtype) norm1(const Vector<P_numtype>& x)
-{
-    return _bz_vec_norm1(x._bz_asVecExpr());
-}
-
-// norm1(expr)
-template<class P_expr>
-BZ_SUMTYPE(_bz_typename P_expr::T_numtype) norm1(_bz_VecExpr<P_expr> expr)
-{
-    return _bz_vec_norm1(expr);
-}
-
-// norm1(vecpick)
-template<class P_numtype>
-BZ_SUMTYPE(P_numtype) norm1(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_norm1(x._bz_asVecExpr());
-}
-
-// norm1(TinyVector)
-template<class P_numtype, int N_dimensions>
-BZ_SUMTYPE(P_numtype) norm1(const TinyVector<P_numtype, N_dimensions>& x)
-{
-    return _bz_vec_norm1(x._bz_asVecExpr());
-}
-
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECNORM1_CC
-
diff --git a/weave/blitz-20001213/blitz/vecpick.cc b/weave/blitz-20001213/blitz/vecpick.cc
deleted file mode 100644
index 62d7165..0000000
--- a/weave/blitz-20001213/blitz/vecpick.cc
+++ /dev/null
@@ -1,667 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECPICK_CC
-#define BZ_VECPICK_CC
-
-#ifndef BZ_VECPICK_H
- #include <blitz/vecpick.h>
-#endif
-
-#ifndef BZ_UPDATE_H
- #include <blitz/update.h>
-#endif
-
-#ifndef BZ_RANDOM_H
- #include <blitz/random.h>
-#endif
-
-#ifndef BZ_VECEXPR_H
- #include <blitz/vecexpr.h>
-#endif
-
-#ifndef BZ_RANDOM_H
- #include <blitz/random.h>
-#endif
-BZ_NAMESPACE(blitz)
-
-/*****************************************************************************
- * Assignment operators with vector expression operand
- */
-
-template<class P_numtype> template<class P_expr, class P_updater>
-inline
-void VectorPick<P_numtype>::_bz_assign(P_expr expr, P_updater)
-{
-    BZPRECONDITION(expr.length(length()) == length());
-
-    // If all vectors in the expression, plus the vector to which the
-    // result is being assigned have unit stride, then avoid stride
-    // calculations.
-    if (_bz_hasFastAccess() && expr._bz_hasFastAccess())
-    {
-#ifndef BZ_PARTIAL_LOOP_UNROLL
-        for (int i=0; i < length(); ++i)
-            P_updater::update(vector_(index_(i)), expr._bz_fastAccess(i));
-#else
-        // Unwind the inner loop, five elements at a time.
-        int leftover = length() % 5;
-
-        int i=0;
-        for (; i < leftover; ++i)
-            P_updater::update(vector_(index_(i)), expr._bz_fastAccess(i));
-
-        for (; i < length(); i += 5)
-        {
-            P_updater::update(vector_(index_(i)), expr._bz_fastAccess(i));
-            P_updater::update(vector_(index_(i+1)), expr._bz_fastAccess(i+1));
-            P_updater::update(vector_(index_(i+2)), expr._bz_fastAccess(i+2));
-            P_updater::update(vector_(index_(i+3)), expr._bz_fastAccess(i+3));
-            P_updater::update(vector_(index_(i+4)), expr._bz_fastAccess(i+4));
-        }
-#endif
-    }
-    else {
-        // Not all unit strides -- have to access all the vector elements
-        // as data_[i*stride_], which is slower.
-        for (int i=0; i < length(); ++i)
-            P_updater::update(vector_[index_[i]], expr[i]);
-    }
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator=(_bz_VecExpr<P_expr> expr)
-{
-    BZPRECONDITION(expr.length(length()) == length());
-
-    // If all vectors in the expression, plus the vector to which the
-    // result is being assigned have unit stride, then avoid stride
-    // calculations.
-    if (_bz_hasFastAccess() && expr._bz_hasFastAccess())
-    {
-#ifndef BZ_PARTIAL_LOOP_UNROLL
-        for (int i=0; i < length(); ++i)
-            (*this)(i) = expr._bz_fastAccess(i);
-#else
-        // Unwind the inner loop, five elements at a time.
-        int leftover = length() % 5;
-
-        int i=0;
-        for (; i < leftover; ++i)
-            (*this)(i) = expr._bz_fastAccess(i);
-
-        for (; i < length(); i += 5)
-        {
-            (*this)(i) = expr._bz_fastAccess(i);
-            (*this)(i+1) = expr._bz_fastAccess(i+1);
-            (*this)(i+2) = expr._bz_fastAccess(i+2);
-            (*this)(i+3) = expr._bz_fastAccess(i+3);
-            (*this)(i+4) = expr._bz_fastAccess(i+4);
-        }
-#endif
-    }
-    else {
-        // Not all unit strides -- have to access all the vector elements
-        // as data_[i*stride_], which is slower.
-        for (int i=0; i < length(); ++i)
-            (*this)[i] = expr[i];
-    }
-    return *this;
-}
-
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator+=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_plus_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator-=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_minus_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator*=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_multiply_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator/=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_divide_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator%=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_mod_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator^=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_xor_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator&=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_bitand_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator|=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_bitor_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator>>=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_shiftr_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator<<=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_shiftl_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with scalar operand
- */
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) = _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator+=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) += _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator-=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) -= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator*=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) *= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator/=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) /= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator%=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) %= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator^=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) ^= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator&=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) &= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator|=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) |= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator>>=(int x)
-{
-    typedef _bz_VecExprConstant<int> T_expr;
-    (*this) >>= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator<<=(int x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) <<= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with vector operand
- */
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator=(const Vector<P_numtype2>& x)
-{
-    (*this) = _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator+=(const Vector<P_numtype2>& x)
-{
-    (*this) += _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator-=(const Vector<P_numtype2>& x)
-{
-    (*this) -= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator*=(const Vector<P_numtype2>& x)
-{
-    (*this) *= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator/=(const Vector<P_numtype2>& x)
-{
-    (*this) /= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator%=(const Vector<P_numtype2>& x)
-{
-    (*this) %= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator^=(const Vector<P_numtype2>& x)
-{
-    (*this) ^= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator&=(const Vector<P_numtype2>& x)
-{
-    (*this) &= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator|=(const Vector<P_numtype2>& x)
-{
-    (*this) |= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator<<=(const Vector<P_numtype2>& x)
-{
-    (*this) <<= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>&
-VectorPick<P_numtype>::operator>>=(const Vector<P_numtype2>& x)
-{
-    (*this) >>= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with Range operand
- */
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator=(Range r)
-{
-    (*this) = _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator+=(Range r)
-{
-    (*this) += _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator-=(Range r)
-{
-    (*this) -= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator*=(Range r)
-{
-    (*this) *= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator/=(Range r)
-{
-    (*this) /= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator%=(Range r)
-{
-    (*this) %= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator^=(Range r)
-{
-    (*this) ^= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator&=(Range r)
-{
-    (*this) &= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator|=(Range r)
-{
-    (*this) |= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator>>=(Range r)
-{
-    (*this) >>= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator<<=(Range r)
-{
-    (*this) <<= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with VectorPick operand
- */
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator=(const 
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) = _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator+=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) += _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator-=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) -= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator*=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) *= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator/=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) /= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator%=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) %= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator^=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) ^= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator&=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) &= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline VectorPick<P_numtype>& VectorPick<P_numtype>::operator|=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) |= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with Random operand
- */
-
-template<class P_numtype> template<class P_distribution>
-VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator=(Random<P_distribution>& rand)
-{
-    (*this) = _bz_VecExpr<_bz_VecExprRandom<P_distribution> > 
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator+=(Random<P_distribution>& rand)
-{
-    (*this) += _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator-=(Random<P_distribution>& rand)
-{
-    (*this) -= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator*=(Random<P_distribution>& rand)
-{
-    (*this) *= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator/=(Random<P_distribution>& rand)
-{
-    (*this) /= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator%=(Random<P_distribution>& rand)
-{
-    (*this) %= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator^=(Random<P_distribution>& rand)
-{
-    (*this) ^= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator&=(Random<P_distribution>& rand)
-{
-    (*this) &= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-VectorPick<P_numtype>& 
-VectorPick<P_numtype>::operator|=(Random<P_distribution>& rand)
-{
-    (*this) |= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECPICK_CC
diff --git a/weave/blitz-20001213/blitz/vecpick.h b/weave/blitz-20001213/blitz/vecpick.h
deleted file mode 100644
index 15525fe..0000000
--- a/weave/blitz-20001213/blitz/vecpick.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/***************************************************************************
- * blitz/vecpick.h      Declaration of the VectorPick<T_numtype> class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_VECPICK_H
-#define BZ_VECPICK_H
-
-// >>>HOMMEL990316
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_VECTOR_H
- #include <blitz/vector.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Forward declarations
-
-template<class P_numtype> class VectorPickIter;
-template<class P_numtype> class VectorPickIterConst;
-
-// Declaration of class VectorPick<P_numtype>
-
-template<class P_numtype>
-class VectorPick {
-
-public:
-    //////////////////////////////////////////////
-    // Public Types
-    //////////////////////////////////////////////
-
-    typedef P_numtype                      T_numtype;
-    typedef Vector<T_numtype>              T_vector;
-    typedef Vector<int>                    T_indexVector;
-    typedef VectorPick<T_numtype>          T_pick;
-    typedef VectorPickIter<T_numtype>      T_iterator;
-    typedef VectorPickIterConst<T_numtype> T_constIterator;
-
-    //////////////////////////////////////////////
-    // Constructors                             //
-    //////////////////////////////////////////////
-
-    VectorPick(T_vector& vector, T_indexVector& indexarg)
-        : vector_(vector), index_(indexarg)
-    { }
-
-    VectorPick(const T_pick& vecpick)
-        : vector_(const_cast<T_vector&>(vecpick.vector_)), 
-          index_(const_cast<T_indexVector&>(vecpick.index_))
-    { }
-
-    VectorPick(T_pick& vecpick, Range r)
-        : vector_(vecpick.vector_), index_(vecpick.index_[r])
-    { }
- 
-    //////////////////////////////////////////////
-    // Member functions
-    //////////////////////////////////////////////
-
-    T_iterator         begin()
-    { return VectorPickIter<T_numtype>(*this); }
-
-    T_constIterator    begin()      const
-    { return VectorPickIterConst<T_numtype>(*this); }
-
-    // T_vector           copy()       const;
-
-    // T_iterator         end();
-
-    // T_constIterator    end()        const;
-
-    T_indexVector&     indexSet()
-    { return index_; }
- 
-    const T_indexVector& indexSet()      const
-    { return index_; }
-
-    int           length()     const
-    { return index_.length(); }
-
-    void               setVector(Vector<T_numtype>& x)
-    { vector_.reference(x); }
-
-    void               setIndex(Vector<int>& index)
-    { index_.reference(index); }
-
-    T_vector&          vector()
-    { return vector_; }
-
-    const T_vector&    vector()     const
-    { return vector_; }
-
-    /////////////////////////////////////////////
-    // Library-internal member functions
-    // These are undocumented and may change or
-    // disappear in future releases.
-    /////////////////////////////////////////////
-
-    int        _bz_suggestLength() const
-    { return index_.length(); }
-
-    _bz_bool        _bz_hasFastAccess() const
-    { return vector_._bz_hasFastAccess() && index_._bz_hasFastAccess(); }
-
-    T_numtype&      _bz_fastAccess(int i)
-    { return vector_._bz_fastAccess(index_._bz_fastAccess(i)); }
-
-    T_numtype       _bz_fastAccess(int i) const
-    { return vector_._bz_fastAccess(index_._bz_fastAccess(i)); }
-
-    _bz_VecExpr<T_constIterator> _bz_asVecExpr() const
-    { return _bz_VecExpr<T_constIterator>(begin()); }
-
-    //////////////////////////////////////////////
-    // Subscripting operators
-    //////////////////////////////////////////////
-
-    T_numtype       operator()(int i) const
-    { 
-        BZPRECONDITION(index_.stride() == 1);
-        BZPRECONDITION(vector_.stride() == 1);
-        BZPRECONDITION(i < index_.length());
-        BZPRECONDITION(index_[i] < vector_.length());
-        return vector_(index_(i));
-    }
-
-    T_numtype&      operator()(int i)
-    {
-        BZPRECONDITION(index_.stride() == 1);
-        BZPRECONDITION(vector_.stride() == 1);
-        BZPRECONDITION(i < index_.length());
-        BZPRECONDITION(index_[i] < vector_.length());
-        return vector_(index_(i));
-    }
-
-    T_numtype       operator[](int i) const
-    {
-        BZPRECONDITION(index_.stride() == 1);
-        BZPRECONDITION(vector_.stride() == 1);
-        BZPRECONDITION(i < index_.length());
-        BZPRECONDITION(index_[i] < vector_.length());
-        return vector_[index_[i]];
-    }
-
-    T_numtype&      operator[](int i)
-    {
-        BZPRECONDITION(index_.stride() == 1);
-        BZPRECONDITION(vector_.stride() == 1);
-        BZPRECONDITION(i < index_.length());
-        BZPRECONDITION(index_[i] < vector_.length());
-        return vector_[index_[i]];
-    }
-
-    T_pick          operator()(Range r)
-    {
-        return T_pick(*this, index_[r]);
-    }
-
-    T_pick          operator[](Range r)
-    {
-        return T_pick(*this, index_[r]);
-    }
-
-    //////////////////////////////////////////////
-    // Assignment operators
-    //////////////////////////////////////////////
-
-    // Scalar operand
-    T_pick& operator=(T_numtype);
-    T_pick& operator+=(T_numtype);
-    T_pick& operator-=(T_numtype);
-    T_pick& operator*=(T_numtype);
-    T_pick& operator/=(T_numtype);
-    T_pick& operator%=(T_numtype);
-    T_pick& operator^=(T_numtype);
-    T_pick& operator&=(T_numtype);
-    T_pick& operator|=(T_numtype);
-    T_pick& operator>>=(int);
-    T_pick& operator<<=(int);
-
-    // Vector operand
-    template<class P_numtype2> T_pick& operator=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator+=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator-=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator*=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator/=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator%=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator^=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator&=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator|=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator>>=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_pick& operator<<=(const Vector<P_numtype2> &);
-
-    // Vector expression operand
-    template<class P_expr> T_pick& operator=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator+=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator-=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator*=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator/=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator%=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator^=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator&=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator|=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator>>=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_pick& operator<<=(_bz_VecExpr<P_expr>);
-
-    // Range operand
-    T_pick& operator=(Range);
-    T_pick& operator+=(Range);
-    T_pick& operator-=(Range);
-    T_pick& operator*=(Range);
-    T_pick& operator/=(Range);
-    T_pick& operator%=(Range);
-    T_pick& operator^=(Range);
-    T_pick& operator&=(Range);
-    T_pick& operator|=(Range);
-    T_pick& operator>>=(Range);
-    T_pick& operator<<=(Range);
-
-    // Vector pick operand
-    template<class P_numtype2> 
-    T_pick& operator=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator+=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator-=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator*=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator/=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator%=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator^=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator&=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator|=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator>>=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_pick& operator<<=(const VectorPick<P_numtype2> &);
-
-    // Random operand
-    template<class P_distribution>
-    T_pick& operator=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_pick& operator+=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_pick& operator-=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_pick& operator*=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_pick& operator/=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_pick& operator%=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_pick& operator^=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_pick& operator&=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_pick& operator|=(Random<P_distribution>& random);
-
-private:
-    VectorPick() { }
-
-    template<class P_expr, class P_updater>
-    inline void _bz_assign(P_expr, P_updater);
-
-private:
-    T_vector vector_;
-    T_indexVector index_;
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/vecpick.cc>
-#include <blitz/vecpickio.cc>
-#include <blitz/vecpickiter.h>
-
-#endif // BZ_VECPICK_H
diff --git a/weave/blitz-20001213/blitz/vecpickio.cc b/weave/blitz-20001213/blitz/vecpickio.cc
deleted file mode 100644
index 1fad372..0000000
--- a/weave/blitz-20001213/blitz/vecpickio.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECPICKIO_CC
-#define BZ_VECPICKIO_CC
-
-#ifndef BZ_VECPICK_H
- #error <blitz/vecpickio.cc> must be included via <blitz/vecpick.h>
-#endif // BZ_VECPICK_H
-
-BZ_NAMESPACE(blitz)
-
-template<class P_numtype>
-ostream& operator<<(ostream& os, const VectorPick<P_numtype>& x)
-{
-    Vector<P_numtype> y(x.length());
-    y = x;
-    os << y;
-    return os;
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECPICKIO_CC
diff --git a/weave/blitz-20001213/blitz/vecpickiter.h b/weave/blitz-20001213/blitz/vecpickiter.h
deleted file mode 100644
index 51fe7c0..0000000
--- a/weave/blitz-20001213/blitz/vecpickiter.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/***************************************************************************
- * blitz/vecpickiter.h      Declaration of VectorPickIter<T_numtype> and
- *                          VectorPickIterConst<T_numtype> classes
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.5  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.4  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.3  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- */
-
-#ifndef BZ_VECPICKITER_H
-#define BZ_VECPICKITER_H
-
-#ifndef BZ_VECPICK_H
- #include <blitz/vecpick.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_numtype>
-class VectorPickIter {
-
-public:
-    typedef P_numtype  T_numtype;
-
-    _bz_explicit VectorPickIter(VectorPick<T_numtype>& x)
-        : data_(x.vector().data()), index_(x.indexSet().data())
-    {
-        dataStride_  = x.vector().stride();
-        indexStride_ = x.indexSet().stride();
-        length_ = x.indexSet().length();
-    }
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    VectorPickIter(const VectorPickIter<T_numtype>& x)
-    {
-        data_ = x.data_;
-        index_ = x.index_;
-        dataStride_ = x.dataStride_;
-        indexStride_ = x.indexStride_;
-        length_ = x.length_;
-    }
-#endif
-
-    T_numtype operator[](int i) const
-    {
-        BZPRECONDITION(i < length_);
-        return data_[dataStride_ * index_[i * indexStride_]];
-    }
-
-    T_numtype& operator[](int i)
-    {
-        BZPRECONDITION(i < length_);
-        return data_[dataStride_ * index_[i * indexStride_]];
-    }
-
-    int length(int) const
-    { return length_; }
-
-    int _bz_suggestLength() const
-    { return length_; }
-
-    _bz_bool isUnitStride() const
-    { return (dataStride_  == 1) && (indexStride_ == 1); }
-
-    _bz_bool _bz_hasFastAccess() const
-    { return isUnitStride(); }
-
-    T_numtype _bz_fastAccess(int i) const
-    {    
-         return data_[index_[i]];
-    }
-
-    T_numtype&  _bz_fastAccess(int i)
-    {
-         return data_[index_[i]];
-    }
-
-    enum { _bz_staticLengthCount = 0,
-           _bz_dynamicLengthCount = 1,
-           _bz_staticLength = 0 };
-
-private:
-    T_numtype * _bz_restrict data_;
-    int dataStride_;
-    const int * _bz_restrict index_;
-    int indexStride_;
-    int length_;
-};
-
-template<class P_numtype>
-class VectorPickIterConst {
-
-public:
-    typedef P_numtype  T_numtype;
-
-    _bz_explicit VectorPickIterConst(const VectorPick<T_numtype>& x)
-        : data_(x.vector().data()), index_(x.indexSet().data())
-    {
-        dataStride_  = x.vector().stride();
-        indexStride_ = x.indexSet().stride();
-        length_ = x.indexSet().length();
-    }
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    VectorPickIterConst(const VectorPickIterConst<T_numtype>& x)
-    {
-        data_ = x.data_;
-        index_ = x.index_;
-        dataStride_ = x.dataStride_;
-        indexStride_ = x.indexStride_;
-        length_ = x.length_;
-    }
-#endif
-
-    T_numtype operator[](int i) const
-    {
-        BZPRECONDITION(i < length_);
-        return data_[dataStride_ * index_[i * indexStride_]];
-    }
-
-    int length(int) const
-    { return length_; }
-
-    int _bz_suggestLength() const
-    { return length_; }
-
-    _bz_bool isUnitStride() const
-    { return (dataStride_  == 1) && (indexStride_ == 1); }
-
-    _bz_bool _bz_hasFastAccess() const
-    { return isUnitStride(); }
-
-    T_numtype _bz_fastAccess(int i) const
-    {
-         return data_[index_[i]];
-    }
-
-    enum { _bz_staticLengthCount = 0,
-           _bz_dynamicLengthCount = 1,
-           _bz_staticLength = 0 };
-
-private:
-    const T_numtype * _bz_restrict data_;
-    int dataStride_;
-    const int * _bz_restrict index_;
-    int indexStride_;
-    int length_;
-};
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECPICKITER_H
-
diff --git a/weave/blitz-20001213/blitz/vecsum.cc b/weave/blitz-20001213/blitz/vecsum.cc
deleted file mode 100644
index d63a0bc..0000000
--- a/weave/blitz-20001213/blitz/vecsum.cc
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECSUM_CC
-#define BZ_VECSUM_CC
-
-#ifndef BZ_VECGLOBS_H
- #error <blitz/vecsum.cc> must be included via <blitz/vecglobs.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr>
-inline
-BZ_SUMTYPE(_bz_typename P_expr::T_numtype)
-_bz_vec_sum(P_expr vector)
-{
-    typedef _bz_typename P_expr::T_numtype T_numtype;
-    typedef BZ_SUMTYPE(T_numtype)          T_sumtype;
-
-    T_sumtype sum = 0;
-    int length = vector._bz_suggestLength();
-
-    if (vector._bz_hasFastAccess())
-    {
-        for (int i=0; i < length; ++i)
-            sum += vector._bz_fastAccess(i);
-    }
-    else {
-        for (int i=0; i < length; ++i)
-            sum += vector(i);
-    }
-
-    return sum;
-}
-
-template<class P_numtype>
-inline
-BZ_SUMTYPE(P_numtype) sum(const Vector<P_numtype>& x)
-{
-    return _bz_vec_sum(x._bz_asVecExpr());
-}
-
-// sum(expr)
-template<class P_expr>
-inline
-BZ_SUMTYPE(_bz_typename P_expr::T_numtype)
-sum(_bz_VecExpr<P_expr> expr)
-{
-    return _bz_vec_sum(expr);
-}
-
-// sum(vecpick)
-template<class P_numtype>
-inline
-BZ_SUMTYPE(P_numtype)
-sum(const VectorPick<P_numtype>& x)
-{
-    return _bz_vec_sum(x._bz_asVecExpr());
-}
-
-// mean(vector)
-template<class P_numtype>
-inline
-BZ_FLOATTYPE(BZ_SUMTYPE(P_numtype)) mean(const Vector<P_numtype>& x)
-{
-    BZPRECONDITION(x.length() > 0);
-
-    typedef BZ_FLOATTYPE(BZ_SUMTYPE(P_numtype)) T_floattype;
-    return _bz_vec_sum(x._bz_asVecExpr()) / (T_floattype) x.length();
-}
-
-// mean(expr)
-template<class P_expr>
-inline
-BZ_FLOATTYPE(BZ_SUMTYPE(_bz_typename P_expr::T_numtype))
-mean(_bz_VecExpr<P_expr> expr)
-{
-    BZPRECONDITION(expr._bz_suggestLength() > 0);
-
-    typedef BZ_FLOATTYPE(BZ_SUMTYPE(_bz_typename P_expr::T_numtype)) 
-        T_floattype;
-    return _bz_vec_sum(expr) / (T_floattype) expr._bz_suggestLength();
-}
-
-// mean(vecpick)
-template<class P_numtype>
-inline
-BZ_FLOATTYPE(BZ_SUMTYPE(P_numtype))
-mean(const VectorPick<P_numtype>& x)
-{
-    BZPRECONDITION(x.length() > 0);
-
-    typedef BZ_FLOATTYPE(BZ_SUMTYPE(P_numtype)) T_floattype;
-    return _bz_vec_sum(x._bz_asVecExpr()) / (T_floattype) x.length();
-}
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECSUM_CC
-
diff --git a/weave/blitz-20001213/blitz/vector.cc b/weave/blitz-20001213/blitz/vector.cc
deleted file mode 100644
index d757529..0000000
--- a/weave/blitz-20001213/blitz/vector.cc
+++ /dev/null
@@ -1,871 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.6  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.5  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.4  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECTOR_CC
-#define BZ_VECTOR_CC
-
-#ifndef BZ_VECTOR_H
- #include <blitz/vector.h>
-#endif
-
-#ifndef BZ_UPDATE_H
- #include <blitz/update.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_numtype>
-Vector<P_numtype> Vector<P_numtype>::copy() const
-{
-    Vector<P_numtype> newCopy(length_);
-
-    if (stride_ == 1)
-    {
-        memcpy(newCopy.data(), data(), length_ * sizeof(P_numtype));
-    }
-    else {
-        for (int i=0; i < length_; ++i)
-        {
-            // Can assume that newCopy has unit stride, and hence use
-            // the operator(), which assumes unit stride.  Since this
-            // vector doesn't have unit stride, use [].
-            newCopy(i) = (*this)[i];
-        }
-    }
-
-    return newCopy;
-}
-
-template<class P_numtype>
-void Vector<P_numtype>::makeUnique()
-{
-    if ((stride_ != 1) || (numReferences() > 1))
-    {
-        Vector<P_numtype> tmp = copy();
-        reference(tmp);
-    }
-}
-
-template<class P_numtype>
-void Vector<P_numtype>::reference(Vector<P_numtype>& x)
-{
-    MemoryBlockReference<P_numtype>::changeBlock(x, 0);
-    length_ = x.length_;
-    stride_ = x.stride_;
-}
-
-template<class P_numtype>
-void Vector<P_numtype>::resize(int length)
-{
-    if (length != length_)
-    {
-        MemoryBlockReference<P_numtype>::newBlock(length);
-        length_ = length;
-        stride_ = 1;
-    }
-}
-
-template<class P_numtype>
-void Vector<P_numtype>::resizeAndPreserve(int newLength)
-{
-    Vector<P_numtype> newVector(newLength);
-
-    if (newLength > length_)
-        newVector(Range(0,length_-1)) = (*this);
-    else 
-        newVector(Range(0,newLength-1)) = (*this);
-
-    reference(newVector);
-}
-
-/*****************************************************************************
- * Assignment operators with vector expression operand
- */
-
-template<class P_numtype> template<class P_expr, class P_updater>
-inline
-void Vector<P_numtype>::_bz_assign(P_expr expr, P_updater)
-{
-    BZPRECONDITION(expr.length(length_) == length_);
-
-    // If all vectors in the expression, plus the vector to which the
-    // result is being assigned have unit stride, then avoid stride
-    // calculations.
-    if ((stride_ == 1) && (expr._bz_hasFastAccess()))
-    {
-#ifndef BZ_PARTIAL_LOOP_UNROLL
-        for (int i=0; i < length_; ++i)
-            P_updater::update(data_[i], expr._bz_fastAccess(i));
-#else
-        // Unwind the inner loop, four elements at a time.
-        int leftover = length_ & 0x03;
-
-        int i=0;
-        for (; i < leftover; ++i)
-            P_updater::update(data_[i], expr._bz_fastAccess(i));
-
-        for (; i < length_; i += 4)
-        {
-            // Common subexpression elimination: avoid doing i+1, i+2, i+3
-            // multiple times (compilers *won't* do this cse automatically)
-            int t1 = i+1;
-            int t2 = i+2;
-            int t3 = i+3;
-    
-            _bz_typename P_expr::T_numtype tmp1, tmp2, tmp3, tmp4;
-
-            // Reading all the results first avoids aliasing
-            // ambiguities, and provides more flexibility in
-            // register allocation & instruction scheduling
-            tmp1 = expr._bz_fastAccess(i);
-            tmp2 = expr._bz_fastAccess(BZ_NO_PROPAGATE(t1));
-            tmp3 = expr._bz_fastAccess(BZ_NO_PROPAGATE(t2));
-            tmp4 = expr._bz_fastAccess(BZ_NO_PROPAGATE(t3));
-
-            P_updater::update(data_[i], BZ_NO_PROPAGATE(tmp1));
-            P_updater::update(data_[t1], tmp2);
-            P_updater::update(data_[t2], tmp3);
-            P_updater::update(data_[t3], tmp4);
-        }
-#endif
-    }
-    else {
-        // Not all unit strides -- have to access all the vector elements
-        // as data_[i*stride_], which is slower.
-        for (int i=0; i < length_; ++i)
-            P_updater::update((*this)[i], expr[i]);
-    }
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator=(_bz_VecExpr<P_expr> expr)
-{
-    BZPRECONDITION(expr.length(length_) == length_);
-
-    // If all vectors in the expression, plus the vector to which the
-    // result is being assigned have unit stride, then avoid stride
-    // calculations.
-    if ((stride_ == 1) && (expr._bz_hasFastAccess()))
-    {
-#ifndef BZ_PARTIAL_LOOP_UNROLL
-        for (int i=0; i < length_; ++i)
-            data_[i] = (P_numtype)expr._bz_fastAccess(i);
-#else
-        // Unwind the inner loop, four elements at a time.
-        int leftover = length_ & 3;
-
-        int i=0;
-        for (; i < leftover; ++i)
-            data_[i] = (P_numtype)expr._bz_fastAccess(i);
-
-        for (; i < length_; i += 4)
-        {
-            // Common subexpression elimination: avoid doing i+1, i+2, i+3
-            // multiple times (compilers *won't* do this cse automatically)
-            int t1 = i+1;
-            int t2 = i+2;
-            int t3 = i+3;
-
-            _bz_typename P_expr::T_numtype tmp1, tmp2, tmp3, tmp4;
-
-            // Reading all the results first avoids aliasing
-            // ambiguities, and provides more flexibility in
-            // register allocation & instruction scheduling
-            tmp1 = expr._bz_fastAccess(i);
-            tmp2 = expr._bz_fastAccess(BZ_NO_PROPAGATE(t1));
-            tmp3 = expr._bz_fastAccess(BZ_NO_PROPAGATE(t2));
-            tmp4 = expr._bz_fastAccess(BZ_NO_PROPAGATE(t3));
-
-            data_[i] = (P_numtype)BZ_NO_PROPAGATE(tmp1);
-            data_[t1] = (P_numtype)tmp2;
-            data_[t2] = (P_numtype)tmp3;
-            data_[t3] = (P_numtype)tmp4;
-        }
-#endif
-    }
-    else {
-        // Not all unit strides -- have to access all the vector elements
-        // as data_[i*stride_], which is slower.
-        for (int i=0; i < length_; ++i)
-            (*this)[i] = (P_numtype)expr[i];
-    }
-    return *this;
-}
-
-#ifdef BZ_PARTIAL_LOOP_UNROLL
- 
-#define BZ_VECTOR_ASSIGN(op)                                            \
-template<class P_numtype> template<class P_expr>                        \
-inline Vector<P_numtype>& Vector<P_numtype>::                           \
-    operator op (_bz_VecExpr<P_expr> expr)                              \
-{                                                                       \
-    BZPRECONDITION(expr.length(length_) == length_);                    \
-    if ((stride_ == 1) && (expr._bz_hasFastAccess()))                   \
-    {                                                                   \
-        int leftover = length_ & 0x03;                                  \
-                                                                        \
-        int i=0;                                                        \
-        for (; i < leftover; ++i)                                       \
-            data_[i] op expr._bz_fastAccess(i);                         \
-                                                                        \
-        for (; i < length_; i += 4)                                     \
-        {                                                               \
-            int t1 = i+1;                                               \
-            int t2 = i+2;                                               \
-            int t3 = i+3;                                               \
-                                                                        \
-            _bz_typename P_expr::T_numtype tmp1, tmp2, tmp3, tmp4;      \
-                                                                        \
-            tmp1 = expr._bz_fastAccess(i);                              \
-            tmp2 = expr._bz_fastAccess(t1);                             \
-            tmp3 = expr._bz_fastAccess(t2);                             \
-            tmp4 = expr._bz_fastAccess(t3);                             \
-                                                                        \
-            data_[i] op tmp1;                                           \
-            data_[t1] op tmp2;                                          \
-            data_[t2] op tmp3;                                          \
-            data_[t3] op tmp4;                                          \
-        }                                                               \
-    }                                                                   \
-    else {                                                              \
-        for (int i=0; i < length_; ++i)                               \
-            (*this)[i] op expr[i];                                      \
-    }                                                                   \
-    return *this;                                                       \
-}
-
-#else   // not BZ_PARTIAL_LOOP_UNROLL
-
-#ifdef BZ_ALTERNATE_FORWARD_BACKWARD_TRAVERSALS
-
-/*
- * NEEDS_WORK: need to incorporate BZ_NO_PROPAGATE here.  This
- * will require doing away with the macro BZ_VECTOR_ASSIGN, and
- * adopting an approach similar to that used in arrayeval.cc.
- */
-
-#define BZ_VECTOR_ASSIGN(op)                                            \
-template<class P_numtype> template<class P_expr>                        \
-inline Vector<P_numtype>& Vector<P_numtype>::                           \
-    operator op (_bz_VecExpr<P_expr> expr)                              \
-{                                                                       \
-    BZPRECONDITION(expr.length(length_) == length_);                    \
-    static int traversalOrder = 0;                                      \
-    if ((stride_ == 1) && (expr._bz_hasFastAccess()))                   \
-    {                                                                   \
-        if (traversalOrder & 0x01)                                      \
-            for (int i=length_-1; i >= 0; --i)                        \
-                data_[i] op expr._bz_fastAccess(i);                     \
-        else                                                            \
-            for (int i=0; i < length_; ++i)                           \
-                data_[i] op expr._bz_fastAccess(i);                     \
-    }                                                                   \
-    else {                                                              \
-        for (int i=0; i < length_; ++i)                               \
-            (*this)[i] op expr[i];                                      \
-    }                                                                   \
-    traversalOrder ^= 0x01;                                             \
-    return *this;                                                       \
-}
-
-#else   // not BZ_ALTERNATE_FORWARD_BACKWARD_TRAVERSALS
-
-#define BZ_VECTOR_ASSIGN(op)                                            \
-template<class P_numtype> template<class P_expr>                        \
-inline Vector<P_numtype>& Vector<P_numtype>::                           \
-    operator op (_bz_VecExpr<P_expr> expr)                              \
-{                                                                       \
-    BZPRECONDITION(expr.length(length_) == length_);                    \
-    if ((stride_ == 1) && (expr._bz_hasFastAccess()))                   \
-    {                                                                   \
-        for (int i=0; i < length_; ++i)                               \
-            data_[i] op expr._bz_fastAccess(i);                         \
-    }                                                                   \
-    else {                                                              \
-        for (int i=0; i < length_; ++i)                               \
-            (*this)[i] op expr[i];                                      \
-    }                                                                   \
-    return *this;                                                       \
-}                 
-#endif // BZ_ALTERNATE_FORWARD_BACKWARD_TRAVERSALS
-#endif // BZ_PARTIAL_LOOP_UNROLL
-
-BZ_VECTOR_ASSIGN(+=)
-BZ_VECTOR_ASSIGN(-=)
-BZ_VECTOR_ASSIGN(*=)
-BZ_VECTOR_ASSIGN(/=)
-BZ_VECTOR_ASSIGN(%=)
-BZ_VECTOR_ASSIGN(^=)
-BZ_VECTOR_ASSIGN(&=)
-BZ_VECTOR_ASSIGN(|=)
-BZ_VECTOR_ASSIGN(>>=)
-BZ_VECTOR_ASSIGN(<<=)
-
-#if NOT_DEFINED
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator+=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_plus_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator-=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_minus_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator*=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_multiply_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator/=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_divide_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator%=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_mod_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator^=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_xor_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator&=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_bitand_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator|=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_bitor_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator>>=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_shiftr_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-
-template<class P_numtype> template<class P_expr>
-inline Vector<P_numtype>& Vector<P_numtype>::operator<<=(_bz_VecExpr<P_expr> expr)
-{
-    _bz_assign(expr, _bz_shiftl_update<P_numtype,
-        _bz_typename P_expr::T_numtype>());
-    return *this;
-}
-#endif   // NOT_DEFINED
-
-/*****************************************************************************
- * Assignment operators with scalar operand
- */
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::initialize(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) = _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator+=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) += _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator-=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) -= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator*=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) *= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator/=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) /= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator%=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) %= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator^=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) ^= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator&=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) &= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator|=(P_numtype x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) |= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator>>=(int x)
-{
-    typedef _bz_VecExprConstant<int> T_expr;
-    (*this) >>= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator<<=(int x)
-{
-    typedef _bz_VecExprConstant<P_numtype> T_expr;
-    (*this) <<= _bz_VecExpr<T_expr>(T_expr(x));
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with vector operand
- */
-
-// This version is for two vectors with the same template parameter.
-// Does not appear to be supported by the current C++ standard; or
-// is it?
-#if 0
-template<class P_numtype> template<>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator=(const Vector<P_numtype>& x)
-{
-    // NEEDS_WORK: if unit strides, use memcpy or something similar.
-
-    typedef VectorIterConst<P_numtype> T_expr;
-    (*this) = _bz_VecExpr<T_expr>(T_expr(*this));
-    return *this;
-}
-#endif
-
-// This version is for two vectors with *different* template
-// parameters.
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& 
-Vector<P_numtype>::operator=(const Vector<P_numtype2>& x)
-{
-    (*this) = _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator+=(const Vector<P_numtype2>& x)
-{
-    (*this) += _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator-=(const Vector<P_numtype2>& x)
-{
-    (*this) -= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator*=(const Vector<P_numtype2>& x)
-{
-    (*this) *= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator/=(const Vector<P_numtype2>& x)
-{
-    (*this) /= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator%=(const Vector<P_numtype2>& x)
-{
-    (*this) %= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator^=(const Vector<P_numtype2>& x)
-{
-    (*this) ^= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator&=(const Vector<P_numtype2>& x)
-{
-    (*this) &= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator|=(const Vector<P_numtype2>& x)
-{
-    (*this) |= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator<<=(const Vector<P_numtype2>& x)
-{
-    (*this) <<= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>&
-Vector<P_numtype>::operator>>=(const Vector<P_numtype2>& x)
-{
-    (*this) >>= _bz_VecExpr<VectorIterConst<P_numtype2> >(x.begin());
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with Range operand
- */
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator=(Range r)
-{
-    (*this) = _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator+=(Range r)
-{
-    (*this) += _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator-=(Range r)
-{
-    (*this) -= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator*=(Range r)
-{
-    (*this) *= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator/=(Range r)
-{
-    (*this) /= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator%=(Range r)
-{
-    (*this) %= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator^=(Range r)
-{
-    (*this) ^= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator&=(Range r)
-{
-    (*this) &= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator|=(Range r)
-{
-    (*this) |= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator>>=(Range r)
-{
-    (*this) >>= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-template<class P_numtype>
-inline Vector<P_numtype>& Vector<P_numtype>::operator<<=(Range r)
-{
-    (*this) <<= _bz_VecExpr<Range>(r);
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with VectorPick operand
- */
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& Vector<P_numtype>::operator=(const 
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) = _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& Vector<P_numtype>::operator+=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) += _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& Vector<P_numtype>::operator-=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) -= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& Vector<P_numtype>::operator*=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) *= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& Vector<P_numtype>::operator/=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) /= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& Vector<P_numtype>::operator%=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) %= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& Vector<P_numtype>::operator^=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) ^= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& Vector<P_numtype>::operator&=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) &= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-template<class P_numtype> template<class P_numtype2>
-inline Vector<P_numtype>& Vector<P_numtype>::operator|=(const
-    VectorPick<P_numtype2>& x)
-{
-    typedef VectorPickIterConst<P_numtype2> T_expr;
-    (*this) |= _bz_VecExpr<T_expr>(x.begin());
-    return *this;
-}
-
-/*****************************************************************************
- * Assignment operators with Random operand
- */
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator=(Random<P_distribution>& rand)
-{
-    for (int i=0; i < length_; ++i) 
-        (*this)[i] = rand.random();
-    return *this;
-}
-
-#ifdef BZ_PECULIAR_RANDOM_VECTOR_ASSIGN_BUG
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator=(Random<P_distribution>& rand)
-{
-    (*this) = _bz_VecExpr<_bz_VecExprRandom<P_distribution> > 
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator+=(Random<P_distribution>& rand)
-{
-    (*this) += _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator-=(Random<P_distribution>& rand)
-{
-    (*this) -= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator*=(Random<P_distribution>& rand)
-{
-    (*this) *= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator/=(Random<P_distribution>& rand)
-{
-    (*this) /= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator%=(Random<P_distribution>& rand)
-{
-    (*this) %= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator^=(Random<P_distribution>& rand)
-{
-    (*this) ^= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator&=(Random<P_distribution>& rand)
-{
-    (*this) &= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-template<class P_numtype> template<class P_distribution>
-Vector<P_numtype>& Vector<P_numtype>::operator|=(Random<P_distribution>& rand)
-{
-    (*this) |= _bz_VecExpr<_bz_VecExprRandom<P_distribution> >
-        (_bz_VecExprRandom<P_distribution>(rand));
-    return *this;
-}
-
-#endif // BZ_PECULIAR_RANDOM_VECTOR_ASSIGN_BUG
-
-BZ_NAMESPACE_END
-
-#endif // BZ_VECTOR_CC
diff --git a/weave/blitz-20001213/blitz/vector.h b/weave/blitz-20001213/blitz/vector.h
deleted file mode 100644
index 9fb8512..0000000
--- a/weave/blitz-20001213/blitz/vector.h
+++ /dev/null
@@ -1,507 +0,0 @@
-/***************************************************************************
- * blitz/vector.h      Declaration of the Vector<P_numtype> class
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.8  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.7  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.6  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.5  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- * Revision 1.4  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- * Revision 1.3  1996/11/11 17:29:13  tveldhui
- * Periodic RCS update
- *
- * Revision 1.2  1996/10/31 21:06:54  tveldhui
- * Did away with multiple template parameters.
- */
-
-/*
- * KNOWN BUGS
- *
- * 1. operator[](Vector<int>) won't match; compiler complains of no
- *       suitable copy constructor for VectorPick<T>
- * 2. Vector<T>(_bz_VecExpr<E>) constructor generates warning
- * 3. operator+=,-=,..etc.(Random<D>) won't match; compiler complains of
- *       no suitable copy constructor for _bz_VecExpr(...).
- */
-
-#ifndef BZ_VECTOR_H
-#define BZ_VECTOR_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-#ifndef BZ_MEMBLOCK_H
- #include <blitz/memblock.h>
-#endif
-
-#ifndef BZ_RANGE_H
- #include <blitz/range.h>
-#endif
-
-#ifndef BZ_LISTINIT_H
- #include <blitz/listinit.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-// Forward declarations
-template<class P_numtype> class VectorIter;
-template<class P_numtype> class VectorIterConst;
-template<class P_expr>    class _bz_VecExpr;       
-template<class P_numtype> class VectorPick;
-template<class P_numtype> class Random;
-
-// Declaration of class Vector<P_numtype>
-
-template<class P_numtype>
-class Vector : protected MemoryBlockReference<P_numtype> {
-
-public:
-    //////////////////////////////////////////////
-    // Public Types
-    //////////////////////////////////////////////
-
-    typedef MemoryBlockReference<P_numtype> T_Base;
-    typedef P_numtype                  T_numtype;
-    typedef Vector<T_numtype>          T_vector;
-    typedef VectorIter<T_numtype>      T_iterator;
-    typedef VectorIterConst<T_numtype> T_constIterator;
-    typedef VectorPick<T_numtype>      T_pick;
-    typedef Vector<int>                T_indexVector;
-
-    //////////////////////////////////////////////
-    // Constructors                             //
-    //////////////////////////////////////////////
-    // Most of the constructors are inlined so that
-    // the setting of the stride_ data member will
-    // be visible to the optimizer.
-
-    Vector()
-    { 
-        length_ = 0;
-        stride_ = 0;
-    }
-
-    // This constructor is provided inline because it involves
-    // no memory allocation.
-    Vector(Vector<T_numtype>& vec)
-        : MemoryBlockReference<T_numtype>(vec)
-    {
-        length_ = vec.length_;
-        stride_ = vec.stride_;
-    }
-
-    // Slightly unsafe cast-away-const version
-    Vector(const Vector<T_numtype>& vec)
-        : MemoryBlockReference<T_numtype>
-           (const_cast<Vector<T_numtype>& >(vec))
-    {
-        length_ = vec.length_;
-        stride_ = vec.stride_;
-    }
-
-    _bz_explicit Vector(int length)
-        : MemoryBlockReference<T_numtype>(length)
-    {
-        length_ = length;
-        stride_ = 1;
-    }
-
-    Vector(Vector<T_numtype>& vec, Range r)
-        : MemoryBlockReference<T_numtype>(vec, 
-            r.first() * vec.stride())
-    {
-        BZPRECONDITION((r.first() >= 0) && (r.first() < vec.length()));
-        BZPRECONDITION((r.last(vec.length()-1) >= 0) 
-            && (r.last(vec.length()-1) < vec.length()));
-        length_ = (r.last(vec.length()-1) - r.first()) / r.stride() + 1;
-        stride_ = vec.stride_ * r.stride();
-    }
-
-    Vector(int length, T_numtype initValue)
-        : MemoryBlockReference<T_numtype>(length)
-    {
-        length_ = length;
-        stride_ = 1;
-        (*this) = initValue;
-    }
-
-    Vector(int length, T_numtype firstValue, T_numtype delta)
-        : MemoryBlockReference<T_numtype>(length)
-    {
-        length_ = length;
-        stride_ = 1;
-        for (int i=0; i < length; ++i)
-            data_[i] = firstValue + i * delta;
-    }
-
-    template<class P_distribution>
-    Vector(int length, Random<P_distribution>& random)
-        : MemoryBlockReference<T_numtype>(length)
-    {
-        length_ = length;
-        stride_ = 1;
-        (*this) = random;
-    }
-
-    template<class P_expr>
-    Vector(_bz_VecExpr<P_expr> expr)
-        : MemoryBlockReference<T_numtype>(expr._bz_suggestLength())
-    {
-        length_ = expr._bz_suggestLength();
-        stride_ = 1;
-        (*this) = expr;
-    }
-
-    // Create a vector view of an already allocated block of memory.
-    // Note that the memory will not be freed when this vector is
-    // destroyed.
-    Vector(int length, T_numtype* _bz_restrict data, int stride = 1)
-        : MemoryBlockReference<T_numtype>(length, data, neverDeleteData)
-    {
-        length_ = length;
-        stride_ = stride;
-    }
-
-    // Create a vector containing a range of numbers
-    Vector(Range r)
-        : MemoryBlockReference<T_numtype>(r._bz_suggestLength())
-    {
-        length_ = r._bz_suggestLength();
-        stride_ = 1;
-        (*this) = _bz_VecExpr<Range>(r);
-    }
-    
-    //////////////////////////////////////////////
-    // Member functions
-    //////////////////////////////////////////////
-
-    // assertUnitStride() is provided as an optimizing trick.  When
-    // vectors are constructed outside the function scope, the optimizer
-    // is unaware that they have unit stride.  This function sets the
-    // stride to 1 in the local scope so the optimizer can do copy
-    // propagation & dead code elimination.  Obviously, you don't
-    // want to use this routine unless you are certain that the
-    // vectors have unit stride.
-    void            assertUnitStride()
-    {
-        BZPRECONDITION(stride_ == 1);
-        stride_ = 1;
-    }
-
-    T_iterator      begin()
-    { return T_iterator(*this); }
-
-    T_constIterator begin()  const
-    { return T_constIterator(*this); }
-
-    T_vector        copy()   const;
-
-    // T_iterator      end();
-    // T_constIterator end()    const;
-
-    T_numtype * _bz_restrict data()  
-    { return data_; }
-
-    const T_numtype * _bz_restrict data() const
-    { return data_; }
-
-    _bz_bool        isUnitStride() const
-    { return stride_ == 1; }
-
-    int        length() const
-    { return length_; }
-
-    void            makeUnique();
-
-    // int        storageSize() const;
-
-    // void            storeToBuffer(void* buffer, int bufferLength) const;
-
-    void            reference(T_vector&);
-
-    void            resize(int length);
-
-    void            resizeAndPreserve(int newLength);
-
-    // int             restoreFromBuffer(void* buffer, int bufferLength);
-
-    T_vector        reverse()
-    { return T_vector(*this,Range(length()-1,0,-1)); }
-
-    int             stride() const
-    { return stride_; }
-
-    operator _bz_VecExpr<VectorIterConst<T_numtype> > () const
-    { return _bz_VecExpr<VectorIterConst<T_numtype> >(begin()); }
-
-    /////////////////////////////////////////////
-    // Library-internal member functions
-    // These are undocumented and may change or
-    // disappear in future releases.
-    /////////////////////////////////////////////
-
-    int        _bz_suggestLength() const
-    { return length_; }
-
-    _bz_bool        _bz_hasFastAccess() const
-    { return stride_ == 1; }
-
-    T_numtype&      _bz_fastAccess(int i)
-    { return data_[i]; }
-
-    T_numtype       _bz_fastAccess(int i) const
-    { return data_[i]; }
-
-    template<class P_expr, class P_updater>
-    void            _bz_assign(P_expr, P_updater);
-
-    _bz_VecExpr<T_constIterator> _bz_asVecExpr() const
-    { return _bz_VecExpr<T_constIterator>(begin()); }
-
-    //////////////////////////////////////////////
-    // Subscripting operators
-    //////////////////////////////////////////////
-
-    // operator()(int) may be used only when the vector has unit
-    // stride.  Otherwise, use operator[].
-    T_numtype        operator()(int i) const
-    {
-        BZPRECONDITION(i < length_);
-        BZPRECONDITION(stride_ == 1);
-        return data_[i];
-    }
-
-    // operator()(int) may be used only when the vector has unit
-    // stride.  Otherwise, use operator[].
-    T_numtype& _bz_restrict operator()(int i) 
-    {
-        BZPRECONDITION(i < length_);
-        BZPRECONDITION(stride_ == 1);
-        return data_[i];
-    }
-
-    T_numtype        operator[](int i) const
-    {
-        BZPRECONDITION(i < length_);
-        return data_[i * stride_];
-    }
-
-    T_numtype& _bz_restrict operator[](int i)
-    {
-        BZPRECONDITION(i < length_);
-        return data_[i * stride_];
-    }
-
-    T_vector      operator()(Range r)
-    {
-        return T_vector(*this, r);
-    }
-
-    T_vector      operator[](Range r)
-    {
-        return T_vector(*this, r);
-    }
-
-    T_pick        operator()(T_indexVector i)
-    {
-        return T_pick(*this, i);
-    }
-
-    T_pick        operator[](T_indexVector i)
-    {
-        return T_pick(*this, i);
-    }
-
-    // T_vector      operator()(difference-equation-expression)
-
-    //////////////////////////////////////////////
-    // Assignment operators
-    //////////////////////////////////////////////
-
-    // Scalar operand
-    ListInitializationSwitch<T_vector,T_iterator> operator=(T_numtype x)
-    {
-        return ListInitializationSwitch<T_vector,T_iterator>(*this, x);
-    }
-
-    T_iterator getInitializationIterator()
-    { return begin(); }
-
-    T_vector& initialize(T_numtype);
-    T_vector& operator+=(T_numtype);
-    T_vector& operator-=(T_numtype);
-    T_vector& operator*=(T_numtype);
-    T_vector& operator/=(T_numtype);
-    T_vector& operator%=(T_numtype);
-    T_vector& operator^=(T_numtype);
-    T_vector& operator&=(T_numtype);
-    T_vector& operator|=(T_numtype);
-    T_vector& operator>>=(int);
-    T_vector& operator<<=(int); 
-
-    // Vector operand
-   
-    template<class P_numtype2> T_vector& operator=(const Vector<P_numtype2> &);
-
-    // Specialization uses memcpy instead of element-by-element cast and
-    // copy
-    // NEEDS_WORK -- KCC won't accept this syntax; standard??
-    // template<> T_vector& operator=(const T_vector&);
-
-    template<class P_numtype2> T_vector& operator+=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator-=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator*=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator/=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator%=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator^=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator&=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator|=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator>>=(const Vector<P_numtype2> &);
-    template<class P_numtype2> T_vector& operator<<=(const Vector<P_numtype2> &);
-
-    // Vector expression operand
-    template<class P_expr> T_vector& operator=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator+=(_bz_VecExpr<P_expr>); 
-    template<class P_expr> T_vector& operator-=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator*=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator/=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator%=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator^=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator&=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator|=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator>>=(_bz_VecExpr<P_expr>);
-    template<class P_expr> T_vector& operator<<=(_bz_VecExpr<P_expr>);
-    
-    // VectorPick operand
-    template<class P_numtype2> 
-    T_vector& operator=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_vector& operator+=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_vector& operator-=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_vector& operator*=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2> 
-    T_vector& operator/=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator%=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator^=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator&=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator|=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator>>=(const VectorPick<P_numtype2> &);
-    template<class P_numtype2>
-    T_vector& operator<<=(const VectorPick<P_numtype2> &);
-
-    // Range operand
-    T_vector& operator=(Range);
-    T_vector& operator+=(Range);
-    T_vector& operator-=(Range);
-    T_vector& operator*=(Range);
-    T_vector& operator/=(Range);
-    T_vector& operator%=(Range);
-    T_vector& operator^=(Range);
-    T_vector& operator&=(Range);
-    T_vector& operator|=(Range);
-    T_vector& operator>>=(Range);
-    T_vector& operator<<=(Range);
-
-    // Random operand
-    template<class P_distribution>
-    T_vector& operator=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_vector& operator+=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_vector& operator-=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_vector& operator*=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_vector& operator/=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_vector& operator%=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_vector& operator^=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_vector& operator&=(Random<P_distribution>& random);
-    template<class P_distribution>
-    T_vector& operator|=(Random<P_distribution>& random);
-
-    //////////////////////////////////////////////
-    // Unary operators
-    //////////////////////////////////////////////
-
-//    T_vector& operator++();
-//    void operator++(int);
-//    T_vector& operator--();
-//    void operator--(int);
-    
-    using    T_Base::data_;
-
-private:
-    int      length_;
-    int      stride_;
-};
-
-// Global I/O functions
-
-template<class P_numtype>
-ostream& operator<<(ostream& os, const Vector<P_numtype>& x);
-
-template<class P_expr>
-ostream& operator<<(ostream& os, _bz_VecExpr<P_expr> expr);
-
-BZ_NAMESPACE_END
-
-#include <blitz/veciter.h>          // Iterators
-#include <blitz/vecpick.h>          // VectorPick
-#include <blitz/vecexpr.h>          // Expression templates
-#include <blitz/vecglobs.h>         // Global functions
-#include <blitz/vector.cc>          // Member functions
-#include <blitz/vecio.cc>           // IO functions
-
-#endif // BZ_VECTOR_H
diff --git a/weave/blitz-20001213/blitz/vecuops.cc b/weave/blitz-20001213/blitz/vecuops.cc
deleted file mode 100644
index b712bdc..0000000
--- a/weave/blitz-20001213/blitz/vecuops.cc
+++ /dev/null
@@ -1,2693 +0,0 @@
-/***************************************************************************
- * blitz/vecuops.cc	Expression templates for vectors, unary functions
- *
- * $Id$
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- */ 
-
-// Generated source file.  Do not edit. 
-// genvecuops.cpp Dec  5 1998 17:06:25
-
-#ifndef BZ_VECUOPS_CC
-#define BZ_VECUOPS_CC
-
-#ifndef BZ_VECEXPR_H
- #error <blitz/vecuops.cc> must be included via <blitz/vecexpr.h>
-#endif // BZ_VECEXPR_H
-
-BZ_NAMESPACE(blitz)
-
-/****************************************************************************
- * abs
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_abs<P_numtype1> > >
-abs(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_abs<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_abs<_bz_typename P_expr1::T_numtype> > >
-abs(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_abs<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_abs<P_numtype1> > >
-abs(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_abs<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_abs<int> > >
-abs(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_abs<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_abs<P_numtype1> > >
-abs(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_abs<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * acos
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_acos<P_numtype1> > >
-acos(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_acos<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_acos<_bz_typename P_expr1::T_numtype> > >
-acos(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_acos<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_acos<P_numtype1> > >
-acos(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_acos<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_acos<int> > >
-acos(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_acos<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_acos<P_numtype1> > >
-acos(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_acos<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * acosh
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_acosh<P_numtype1> > >
-acosh(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_acosh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_acosh<_bz_typename P_expr1::T_numtype> > >
-acosh(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_acosh<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_acosh<P_numtype1> > >
-acosh(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_acosh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_acosh<int> > >
-acosh(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_acosh<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_acosh<P_numtype1> > >
-acosh(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_acosh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * asin
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_asin<P_numtype1> > >
-asin(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_asin<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_asin<_bz_typename P_expr1::T_numtype> > >
-asin(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_asin<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_asin<P_numtype1> > >
-asin(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_asin<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_asin<int> > >
-asin(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_asin<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_asin<P_numtype1> > >
-asin(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_asin<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * asinh
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_asinh<P_numtype1> > >
-asinh(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_asinh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_asinh<_bz_typename P_expr1::T_numtype> > >
-asinh(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_asinh<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_asinh<P_numtype1> > >
-asinh(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_asinh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_asinh<int> > >
-asinh(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_asinh<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_asinh<P_numtype1> > >
-asinh(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_asinh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * atan
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_atan<P_numtype1> > >
-atan(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_atan<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_atan<_bz_typename P_expr1::T_numtype> > >
-atan(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_atan<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_atan<P_numtype1> > >
-atan(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_atan<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_atan<int> > >
-atan(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_atan<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_atan<P_numtype1> > >
-atan(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_atan<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * atanh
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_atanh<P_numtype1> > >
-atanh(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_atanh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_atanh<_bz_typename P_expr1::T_numtype> > >
-atanh(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_atanh<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_atanh<P_numtype1> > >
-atanh(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_atanh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_atanh<int> > >
-atanh(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_atanh<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_atanh<P_numtype1> > >
-atanh(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_atanh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * _class
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSV_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz__class<P_numtype1> > >
-_class(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz__class<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz__class<_bz_typename P_expr1::T_numtype> > >
-_class(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz__class<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz__class<P_numtype1> > >
-_class(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz__class<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz__class<int> > >
-_class(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz__class<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz__class<P_numtype1> > >
-_class(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz__class<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * cbrt
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_cbrt<P_numtype1> > >
-cbrt(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_cbrt<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_cbrt<_bz_typename P_expr1::T_numtype> > >
-cbrt(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_cbrt<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_cbrt<P_numtype1> > >
-cbrt(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_cbrt<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_cbrt<int> > >
-cbrt(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_cbrt<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_cbrt<P_numtype1> > >
-cbrt(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_cbrt<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * ceil
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_ceil<P_numtype1> > >
-ceil(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_ceil<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_ceil<_bz_typename P_expr1::T_numtype> > >
-ceil(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_ceil<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_ceil<P_numtype1> > >
-ceil(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_ceil<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_ceil<int> > >
-ceil(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_ceil<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_ceil<P_numtype1> > >
-ceil(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_ceil<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * cos
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_cos<P_numtype1> > >
-cos(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_cos<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_cos<_bz_typename P_expr1::T_numtype> > >
-cos(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_cos<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_cos<P_numtype1> > >
-cos(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_cos<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_cos<int> > >
-cos(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_cos<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_cos<P_numtype1> > >
-cos(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_cos<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * cosh
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_cosh<P_numtype1> > >
-cosh(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_cosh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_cosh<_bz_typename P_expr1::T_numtype> > >
-cosh(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_cosh<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_cosh<P_numtype1> > >
-cosh(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_cosh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_cosh<int> > >
-cosh(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_cosh<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_cosh<P_numtype1> > >
-cosh(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_cosh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * exp
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_exp<P_numtype1> > >
-exp(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_exp<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_exp<_bz_typename P_expr1::T_numtype> > >
-exp(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_exp<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_exp<P_numtype1> > >
-exp(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_exp<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_exp<int> > >
-exp(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_exp<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_exp<P_numtype1> > >
-exp(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_exp<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * expm1
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_expm1<P_numtype1> > >
-expm1(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_expm1<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_expm1<_bz_typename P_expr1::T_numtype> > >
-expm1(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_expm1<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_expm1<P_numtype1> > >
-expm1(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_expm1<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_expm1<int> > >
-expm1(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_expm1<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_expm1<P_numtype1> > >
-expm1(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_expm1<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * erf
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_erf<P_numtype1> > >
-erf(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_erf<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_erf<_bz_typename P_expr1::T_numtype> > >
-erf(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_erf<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_erf<P_numtype1> > >
-erf(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_erf<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_erf<int> > >
-erf(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_erf<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_erf<P_numtype1> > >
-erf(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_erf<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * erfc
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_erfc<P_numtype1> > >
-erfc(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_erfc<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_erfc<_bz_typename P_expr1::T_numtype> > >
-erfc(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_erfc<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_erfc<P_numtype1> > >
-erfc(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_erfc<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_erfc<int> > >
-erfc(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_erfc<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_erfc<P_numtype1> > >
-erfc(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_erfc<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * fabs
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_abs<P_numtype1> > >
-fabs(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_abs<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_abs<_bz_typename P_expr1::T_numtype> > >
-fabs(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_abs<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_abs<P_numtype1> > >
-fabs(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_abs<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_abs<int> > >
-fabs(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_abs<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_abs<P_numtype1> > >
-fabs(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_abs<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * floor
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_floor<P_numtype1> > >
-floor(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_floor<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_floor<_bz_typename P_expr1::T_numtype> > >
-floor(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_floor<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_floor<P_numtype1> > >
-floor(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_floor<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_floor<int> > >
-floor(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_floor<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_floor<P_numtype1> > >
-floor(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_floor<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * ilogb
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSV_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_ilogb<P_numtype1> > >
-ilogb(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_ilogb<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_ilogb<_bz_typename P_expr1::T_numtype> > >
-ilogb(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_ilogb<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_ilogb<P_numtype1> > >
-ilogb(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_ilogb<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_ilogb<int> > >
-ilogb(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_ilogb<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_ilogb<P_numtype1> > >
-ilogb(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_ilogb<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * isnan
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_isnan<P_numtype1> > >
-isnan(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_isnan<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_isnan<_bz_typename P_expr1::T_numtype> > >
-isnan(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_isnan<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_isnan<P_numtype1> > >
-isnan(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_isnan<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_isnan<int> > >
-isnan(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_isnan<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_isnan<P_numtype1> > >
-isnan(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_isnan<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * itrunc
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSV_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_itrunc<P_numtype1> > >
-itrunc(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_itrunc<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_itrunc<_bz_typename P_expr1::T_numtype> > >
-itrunc(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_itrunc<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_itrunc<P_numtype1> > >
-itrunc(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_itrunc<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_itrunc<int> > >
-itrunc(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_itrunc<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_itrunc<P_numtype1> > >
-itrunc(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_itrunc<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * j0
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_j0<P_numtype1> > >
-j0(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_j0<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_j0<_bz_typename P_expr1::T_numtype> > >
-j0(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_j0<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_j0<P_numtype1> > >
-j0(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_j0<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_j0<int> > >
-j0(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_j0<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_j0<P_numtype1> > >
-j0(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_j0<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * j1
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_j1<P_numtype1> > >
-j1(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_j1<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_j1<_bz_typename P_expr1::T_numtype> > >
-j1(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_j1<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_j1<P_numtype1> > >
-j1(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_j1<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_j1<int> > >
-j1(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_j1<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_j1<P_numtype1> > >
-j1(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_j1<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * lgamma
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_lgamma<P_numtype1> > >
-lgamma(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_lgamma<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_lgamma<_bz_typename P_expr1::T_numtype> > >
-lgamma(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_lgamma<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_lgamma<P_numtype1> > >
-lgamma(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_lgamma<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_lgamma<int> > >
-lgamma(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_lgamma<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_lgamma<P_numtype1> > >
-lgamma(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_lgamma<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * log
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_log<P_numtype1> > >
-log(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_log<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_log<_bz_typename P_expr1::T_numtype> > >
-log(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_log<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_log<P_numtype1> > >
-log(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_log<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_log<int> > >
-log(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_log<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_log<P_numtype1> > >
-log(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_log<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * logb
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_logb<P_numtype1> > >
-logb(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_logb<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_logb<_bz_typename P_expr1::T_numtype> > >
-logb(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_logb<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_logb<P_numtype1> > >
-logb(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_logb<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_logb<int> > >
-logb(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_logb<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_logb<P_numtype1> > >
-logb(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_logb<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * log1p
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_log1p<P_numtype1> > >
-log1p(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_log1p<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_log1p<_bz_typename P_expr1::T_numtype> > >
-log1p(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_log1p<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_log1p<P_numtype1> > >
-log1p(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_log1p<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_log1p<int> > >
-log1p(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_log1p<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_log1p<P_numtype1> > >
-log1p(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_log1p<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * log10
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_log10<P_numtype1> > >
-log10(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_log10<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_log10<_bz_typename P_expr1::T_numtype> > >
-log10(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_log10<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_log10<P_numtype1> > >
-log10(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_log10<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_log10<int> > >
-log10(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_log10<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_log10<P_numtype1> > >
-log10(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_log10<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * nearest
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSV_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_nearest<P_numtype1> > >
-nearest(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_nearest<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_nearest<_bz_typename P_expr1::T_numtype> > >
-nearest(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_nearest<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_nearest<P_numtype1> > >
-nearest(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_nearest<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_nearest<int> > >
-nearest(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_nearest<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_nearest<P_numtype1> > >
-nearest(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_nearest<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * rint
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_rint<P_numtype1> > >
-rint(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_rint<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_rint<_bz_typename P_expr1::T_numtype> > >
-rint(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_rint<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_rint<P_numtype1> > >
-rint(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_rint<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_rint<int> > >
-rint(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_rint<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_rint<P_numtype1> > >
-rint(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_rint<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * rsqrt
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSV_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_rsqrt<P_numtype1> > >
-rsqrt(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_rsqrt<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_rsqrt<_bz_typename P_expr1::T_numtype> > >
-rsqrt(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_rsqrt<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_rsqrt<P_numtype1> > >
-rsqrt(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_rsqrt<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_rsqrt<int> > >
-rsqrt(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_rsqrt<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_rsqrt<P_numtype1> > >
-rsqrt(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_rsqrt<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * sin
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_sin<P_numtype1> > >
-sin(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_sin<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_sin<_bz_typename P_expr1::T_numtype> > >
-sin(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_sin<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_sin<P_numtype1> > >
-sin(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_sin<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_sin<int> > >
-sin(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_sin<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_sin<P_numtype1> > >
-sin(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_sin<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * sinh
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_sinh<P_numtype1> > >
-sinh(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_sinh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_sinh<_bz_typename P_expr1::T_numtype> > >
-sinh(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_sinh<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_sinh<P_numtype1> > >
-sinh(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_sinh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_sinh<int> > >
-sinh(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_sinh<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_sinh<P_numtype1> > >
-sinh(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_sinh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * sqr
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_sqr<P_numtype1> > >
-sqr(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_sqr<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_sqr<_bz_typename P_expr1::T_numtype> > >
-sqr(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_sqr<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_sqr<P_numtype1> > >
-sqr(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_sqr<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_sqr<int> > >
-sqr(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_sqr<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_sqr<P_numtype1> > >
-sqr(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_sqr<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * sqrt
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_sqrt<P_numtype1> > >
-sqrt(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_sqrt<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_sqrt<_bz_typename P_expr1::T_numtype> > >
-sqrt(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_sqrt<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_sqrt<P_numtype1> > >
-sqrt(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_sqrt<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_sqrt<int> > >
-sqrt(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_sqrt<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_sqrt<P_numtype1> > >
-sqrt(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_sqrt<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * tan
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_tan<P_numtype1> > >
-tan(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_tan<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_tan<_bz_typename P_expr1::T_numtype> > >
-tan(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_tan<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_tan<P_numtype1> > >
-tan(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_tan<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_tan<int> > >
-tan(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_tan<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_tan<P_numtype1> > >
-tan(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_tan<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * tanh
- ****************************************************************************/
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_tanh<P_numtype1> > >
-tanh(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_tanh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_tanh<_bz_typename P_expr1::T_numtype> > >
-tanh(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_tanh<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_tanh<P_numtype1> > >
-tanh(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_tanh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_tanh<int> > >
-tanh(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_tanh<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_tanh<P_numtype1> > >
-tanh(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_tanh<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-/****************************************************************************
- * uitrunc
- ****************************************************************************/
-
-#ifdef BZ_HAVE_SYSV_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_uitrunc<P_numtype1> > >
-uitrunc(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_uitrunc<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_uitrunc<_bz_typename P_expr1::T_numtype> > >
-uitrunc(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_uitrunc<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_uitrunc<P_numtype1> > >
-uitrunc(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_uitrunc<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_uitrunc<int> > >
-uitrunc(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_uitrunc<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_uitrunc<P_numtype1> > >
-uitrunc(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_uitrunc<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * y0
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_y0<P_numtype1> > >
-y0(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_y0<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_y0<_bz_typename P_expr1::T_numtype> > >
-y0(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_y0<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_y0<P_numtype1> > >
-y0(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_y0<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_y0<int> > >
-y0(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_y0<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_y0<P_numtype1> > >
-y0(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_y0<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-/****************************************************************************
- * y1
- ****************************************************************************/
-
-#ifdef BZ_HAVE_IEEE_MATH
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-    _bz_y1<P_numtype1> > >
-y1(const Vector<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorIterConst<P_numtype1>,
-        _bz_y1<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-    _bz_y1<_bz_typename P_expr1::T_numtype> > >
-y1(_bz_VecExpr<P_expr1> d1)
-{
-    typedef _bz_VecExprUnaryOp<_bz_VecExpr<P_expr1>,
-        _bz_y1<_bz_typename P_expr1::T_numtype> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-    _bz_y1<P_numtype1> > >
-y1(const VectorPick<P_numtype1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<VectorPickIterConst<P_numtype1>,
-        _bz_y1<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<Range,
-    _bz_y1<int> > >
-y1(Range d1)
-{
-    typedef _bz_VecExprUnaryOp<Range,
-        _bz_y1<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1));
-}
-
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-    _bz_y1<P_numtype1> > >
-y1(const TinyVector<P_numtype1, N_length1>& d1)
-{
-    typedef _bz_VecExprUnaryOp<TinyVectorIterConst<P_numtype1, N_length1>,
-        _bz_y1<P_numtype1> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin()));
-}
-
-#endif
-
-BZ_NAMESPACE_END
-
-#endif
diff --git a/weave/blitz-20001213/blitz/vecwhere.cc b/weave/blitz-20001213/blitz/vecwhere.cc
deleted file mode 100644
index 966c6e5..0000000
--- a/weave/blitz-20001213/blitz/vecwhere.cc
+++ /dev/null
@@ -1,7753 +0,0 @@
-/***************************************************************************
- * blitz/vecwhere.cc	where(X,Y,Z) function for vectors
- *
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.   Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- * Licensing inquiries:  blitz-licenses@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:11  tveldhui
- * Imported sources
- *
- * Revision 1.1  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- */ 
-
-// Generated source file.  Do not edit. 
-// genvecwhere.cpp Feb  5 1997 09:52:29
-
-#ifndef BZ_VECWHERE_CC
-#define BZ_VECWHERE_CC
-
-BZ_NAMESPACE(blitz)
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, Range)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, int)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, float)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, double)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, long double)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Vector<P_numtype1>, Vector<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const Vector<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, Vector<P_numtype3>)
-template<class P_numtype1, class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, Range)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_expr2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, int)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, float)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, double)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, long double)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Vector<P_numtype1>, _bz_VecExpr<P_expr2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class P_expr2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const Vector<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, Range)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, int)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, float)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, double)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, long double)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Vector<P_numtype1>, VectorPick<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const Vector<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, Range, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, Range, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(Vector<P_numtype1>, Range, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, Range, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(Vector<P_numtype1>, Range, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, Range, int)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<int> > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Vector<P_numtype1>, Range, float)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<float> > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Vector<P_numtype1>, Range, double)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<double> > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Vector<P_numtype1>, Range, long double)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<long double> > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Vector<P_numtype1>, Range, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const Vector<P_numtype1>& d1, 
-      Range d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_numtype2, int N_length2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, Range)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype2, int N_length2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, int)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, float)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, double)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, long double)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Vector<P_numtype1>, TinyVector<P_numtype2, N_length2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class P_numtype2, int N_length2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const Vector<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, int, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      int d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, int, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      int d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, int, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      int d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, int, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      int d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, int, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      int d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, int, int)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > >
-where(const Vector<P_numtype1>& d1, 
-      int d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Vector<P_numtype1>, float, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      float d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, float, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      float d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, float, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      float d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, float, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      float d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, float, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      float d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, float, float)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > >
-where(const Vector<P_numtype1>& d1, 
-      float d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Vector<P_numtype1>, double, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, double, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, double, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, double, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, double, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, double, double)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > >
-where(const Vector<P_numtype1>& d1, 
-      double d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Vector<P_numtype1>, long double, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      long double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, long double, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      long double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, long double, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      long double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, long double, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      long double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(Vector<P_numtype1>, long double, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      long double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(Vector<P_numtype1>, long double, long double)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > >
-where(const Vector<P_numtype1>& d1, 
-      long double d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Vector<P_numtype1>, complex<T2>, Vector<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      complex<T2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, complex<T2>, _bz_VecExpr<P_expr3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > >
-where(const Vector<P_numtype1>& d1, 
-      complex<T2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, complex<T2>, VectorPick<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > >
-where(const Vector<P_numtype1>& d1, 
-      complex<T2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, complex<T2>, Range)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > >
-where(const Vector<P_numtype1>& d1, 
-      complex<T2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, complex<T2>, TinyVector<P_numtype3, N_length3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const Vector<P_numtype1>& d1, 
-      complex<T2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Vector<P_numtype1>, complex<T2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const Vector<P_numtype1>& d1, 
-      complex<T2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, Vector<P_numtype3>)
-template<class P_expr1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_expr1, class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_expr1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, Range)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_expr1, class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, int)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, float)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, double)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, long double)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, Vector<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const Vector<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, Vector<P_numtype3>)
-template<class P_expr1, class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, _bz_VecExpr<P_expr3>)
-template<class P_expr1, class P_expr2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, VectorPick<P_numtype3>)
-template<class P_expr1, class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, Range)
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, TinyVector<P_numtype3, N_length3>)
-template<class P_expr1, class P_expr2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, int)
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, float)
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, double)
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, long double)
-template<class P_expr1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, _bz_VecExpr<P_expr2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class P_expr2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(_bz_VecExpr<P_expr1> d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, Vector<P_numtype3>)
-template<class P_expr1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_expr1, class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_expr1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, Range)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_expr1, class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, int)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, float)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, double)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, long double)
-template<class P_expr1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, VectorPick<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const VectorPick<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, Range, Vector<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, Range, _bz_VecExpr<P_expr3>)
-template<class P_expr1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, Range, VectorPick<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, Range, Range)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, Range, TinyVector<P_numtype3, N_length3>)
-template<class P_expr1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, Range, int)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<int> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, Range, float)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<float> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, Range, double)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, Range, long double)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<long double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, Range, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(_bz_VecExpr<P_expr1> d1, 
-      Range d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, Vector<P_numtype3>)
-template<class P_expr1, class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, _bz_VecExpr<P_expr3>)
-template<class P_expr1, class P_numtype2, int N_length2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, VectorPick<P_numtype3>)
-template<class P_expr1, class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, Range)
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, TinyVector<P_numtype3, N_length3>)
-template<class P_expr1, class P_numtype2, int N_length2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, int)
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, float)
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, double)
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, long double)
-template<class P_expr1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, TinyVector<P_numtype2, N_length2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class P_numtype2, int N_length2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(_bz_VecExpr<P_expr1> d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, int, Vector<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      int d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, int, _bz_VecExpr<P_expr3>)
-template<class P_expr1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      int d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, int, VectorPick<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      int d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, int, Range)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      int d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, int, TinyVector<P_numtype3, N_length3>)
-template<class P_expr1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      int d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, int, int)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      int d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, float, Vector<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      float d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, float, _bz_VecExpr<P_expr3>)
-template<class P_expr1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      float d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, float, VectorPick<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      float d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, float, Range)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      float d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, float, TinyVector<P_numtype3, N_length3>)
-template<class P_expr1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      float d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, float, float)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      float d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, double, Vector<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, double, _bz_VecExpr<P_expr3>)
-template<class P_expr1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, double, VectorPick<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, double, Range)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, double, TinyVector<P_numtype3, N_length3>)
-template<class P_expr1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, double, double)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      double d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, long double, Vector<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      long double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, long double, _bz_VecExpr<P_expr3>)
-template<class P_expr1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      long double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, long double, VectorPick<P_numtype3>)
-template<class P_expr1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      long double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, long double, Range)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      long double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(_bz_VecExpr<P_expr1>, long double, TinyVector<P_numtype3, N_length3>)
-template<class P_expr1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      long double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(_bz_VecExpr<P_expr1>, long double, long double)
-template<class P_expr1>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      long double d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(_bz_VecExpr<P_expr1>, complex<T2>, Vector<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, complex<T2>, _bz_VecExpr<P_expr3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, complex<T2>, VectorPick<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, complex<T2>, Range)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > >
-where(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, complex<T2>, TinyVector<P_numtype3, N_length3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(_bz_VecExpr<P_expr1>, complex<T2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr1, class T2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(_bz_VecExpr<P_expr1> d1, 
-      complex<T2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<_bz_VecExpr<P_expr1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, Range)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, int)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, float)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, double)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, long double)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, Vector<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const VectorPick<P_numtype1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, Vector<P_numtype3>)
-template<class P_numtype1, class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, Range)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_expr2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, int)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, float)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, double)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, long double)
-template<class P_numtype1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, _bz_VecExpr<P_expr2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class P_expr2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const VectorPick<P_numtype1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, Range)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, int)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, float)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, double)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, long double)
-template<class P_numtype1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, VectorPick<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const VectorPick<P_numtype1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, Range, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, Range, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, Range, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, Range, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, Range, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, Range, int)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<int> > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, Range, float)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<float> > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, Range, double)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, Range, long double)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<long double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, Range, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const VectorPick<P_numtype1>& d1, 
-      Range d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_numtype2, int N_length2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, Range)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype2, int N_length2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, int)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, float)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, double)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, long double)
-template<class P_numtype1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, TinyVector<P_numtype2, N_length2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class P_numtype2, int N_length2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const VectorPick<P_numtype1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, int, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      int d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, int, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      int d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, int, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      int d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, int, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      int d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, int, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      int d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, int, int)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > >
-where(const VectorPick<P_numtype1>& d1, 
-      int d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, float, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      float d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, float, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      float d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, float, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      float d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, float, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      float d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, float, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      float d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, float, float)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > >
-where(const VectorPick<P_numtype1>& d1, 
-      float d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, double, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, double, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, double, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, double, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, double, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, double, double)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      double d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, long double, Vector<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      long double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, long double, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      long double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, long double, VectorPick<P_numtype3>)
-template<class P_numtype1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      long double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, long double, Range)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      long double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(VectorPick<P_numtype1>, long double, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      long double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(VectorPick<P_numtype1>, long double, long double)
-template<class P_numtype1>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > >
-where(const VectorPick<P_numtype1>& d1, 
-      long double d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(VectorPick<P_numtype1>, complex<T2>, Vector<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, complex<T2>, _bz_VecExpr<P_expr3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, complex<T2>, VectorPick<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, complex<T2>, Range)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > >
-where(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, complex<T2>, TinyVector<P_numtype3, N_length3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(VectorPick<P_numtype1>, complex<T2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, class T2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const VectorPick<P_numtype1>& d1, 
-      complex<T2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<VectorPickIterConst<P_numtype1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, Vector<P_numtype2>, Vector<P_numtype3>)
-template<class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Range, Vector<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(Range, Vector<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Range, Vector<P_numtype2>, Range)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      Range > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(Range, Vector<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Range, Vector<P_numtype2>, int)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Range, Vector<P_numtype2>, float)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Range, Vector<P_numtype2>, double)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Range, Vector<P_numtype2>, long double)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Range, Vector<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(Range d1, 
-      const Vector<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, _bz_VecExpr<P_expr2>, Vector<P_numtype3>)
-template<class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(Range, _bz_VecExpr<P_expr2>, _bz_VecExpr<P_expr3>)
-template<class P_expr2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3));
-}
-
-// where(Range, _bz_VecExpr<P_expr2>, VectorPick<P_numtype3>)
-template<class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(Range, _bz_VecExpr<P_expr2>, Range)
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      Range > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3));
-}
-
-// where(Range, _bz_VecExpr<P_expr2>, TinyVector<P_numtype3, N_length3>)
-template<class P_expr2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(Range, _bz_VecExpr<P_expr2>, int)
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Range, _bz_VecExpr<P_expr2>, float)
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Range, _bz_VecExpr<P_expr2>, double)
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Range, _bz_VecExpr<P_expr2>, long double)
-template<class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Range, _bz_VecExpr<P_expr2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_expr2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(Range d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, VectorPick<P_numtype2>, Vector<P_numtype3>)
-template<class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Range, VectorPick<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(Range, VectorPick<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Range, VectorPick<P_numtype2>, Range)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(Range, VectorPick<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Range, VectorPick<P_numtype2>, int)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Range, VectorPick<P_numtype2>, float)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Range, VectorPick<P_numtype2>, double)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Range, VectorPick<P_numtype2>, long double)
-template<class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Range, VectorPick<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(Range d1, 
-      const VectorPick<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, Range, Vector<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      Range d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(Range, Range, _bz_VecExpr<P_expr3>)
-template<class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      Range d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3));
-}
-
-// where(Range, Range, VectorPick<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      Range d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(Range, Range, Range)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      Range > >
-where(Range d1, 
-      Range d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3));
-}
-
-// where(Range, Range, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      Range d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      d3.begin()));
-}
-
-// where(Range, Range, int)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<int> > >
-where(Range d1, 
-      Range d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Range, Range, float)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<float> > >
-where(Range d1, 
-      Range d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Range, Range, double)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<double> > >
-where(Range d1, 
-      Range d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Range, Range, long double)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<long double> > >
-where(Range d1, 
-      Range d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Range, Range, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(Range d1, 
-      Range d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, TinyVector<P_numtype2, N_length2>, Vector<P_numtype3>)
-template<class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Range, TinyVector<P_numtype2, N_length2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype2, int N_length2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(Range, TinyVector<P_numtype2, N_length2>, VectorPick<P_numtype3>)
-template<class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Range, TinyVector<P_numtype2, N_length2>, Range)
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3));
-}
-
-// where(Range, TinyVector<P_numtype2, N_length2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype2, int N_length2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(Range, TinyVector<P_numtype2, N_length2>, int)
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Range, TinyVector<P_numtype2, N_length2>, float)
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Range, TinyVector<P_numtype2, N_length2>, double)
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Range, TinyVector<P_numtype2, N_length2>, long double)
-template<class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Range, TinyVector<P_numtype2, N_length2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype2, int N_length2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(Range d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, int, Vector<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      int d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(Range, int, _bz_VecExpr<P_expr3>)
-template<class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      int d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(Range, int, VectorPick<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      int d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(Range, int, Range)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      Range > >
-where(Range d1, 
-      int d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(Range, int, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      int d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(Range, int, int)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > >
-where(Range d1, 
-      int d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<int>(d2), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(Range, float, Vector<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      float d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(Range, float, _bz_VecExpr<P_expr3>)
-template<class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      float d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(Range, float, VectorPick<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      float d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(Range, float, Range)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      Range > >
-where(Range d1, 
-      float d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(Range, float, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      float d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(Range, float, float)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > >
-where(Range d1, 
-      float d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<float>(d2), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(Range, double, Vector<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(Range, double, _bz_VecExpr<P_expr3>)
-template<class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(Range, double, VectorPick<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(Range, double, Range)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      Range > >
-where(Range d1, 
-      double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(Range, double, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(Range, double, double)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > >
-where(Range d1, 
-      double d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<double>(d2), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(Range, long double, Vector<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      long double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(Range, long double, _bz_VecExpr<P_expr3>)
-template<class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      long double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(Range, long double, VectorPick<P_numtype3>)
-template<class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      long double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(Range, long double, Range)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      Range > >
-where(Range d1, 
-      long double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(Range, long double, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      long double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(Range, long double, long double)
-
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > >
-where(Range d1, 
-      long double d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<long double>(d2), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(Range, complex<T2>, Vector<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > >
-where(Range d1, 
-      complex<T2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, complex<T2>, _bz_VecExpr<P_expr3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class T2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > >
-where(Range d1, 
-      complex<T2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, complex<T2>, VectorPick<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > >
-where(Range d1, 
-      complex<T2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, complex<T2>, Range)
-#ifdef BZ_HAVE_COMPLEX
-template<class T2>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > >
-where(Range d1, 
-      complex<T2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, complex<T2>, TinyVector<P_numtype3, N_length3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class T2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(Range d1, 
-      complex<T2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(Range, complex<T2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class T2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(Range d1, 
-      complex<T2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<Range, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1, 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, Vector<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, int N_length1, class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, Range)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, int N_length1, class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, int)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, float)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, double)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, long double)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Vector<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const Vector<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, Vector<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, int N_length1, class P_expr2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, VectorPick<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_expr2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, Range)
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, int N_length1, class P_expr2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, int)
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, float)
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, double)
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, long double)
-template<class P_numtype1, int N_length1, class P_expr2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, _bz_VecExpr<P_expr2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class P_expr2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      _bz_VecExpr<P_expr2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExpr<P_expr2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, Vector<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, int N_length1, class P_numtype2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, VectorPick<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, Range)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, int N_length1, class P_numtype2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, int)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, float)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, double)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, long double)
-template<class P_numtype1, int N_length1, class P_numtype2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, VectorPick<P_numtype2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class P_numtype2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const VectorPick<P_numtype2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      VectorPickIterConst<P_numtype2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, Range, Vector<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Range, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, int N_length1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Range, VectorPick<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Range, Range)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Range, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, int N_length1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Range, int)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<int> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Range, float)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<float> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Range, double)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Range, long double)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<long double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, Range, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      Range d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      Range, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2, 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, Vector<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, VectorPick<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, Range)
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, int)
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, float)
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, double)
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, long double)
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, TinyVector<P_numtype2, N_length2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class P_numtype2, int N_length2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      const TinyVector<P_numtype2, N_length2>& d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      TinyVectorIterConst<P_numtype2, N_length2>, 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      d2.begin(), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, int, Vector<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, int, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, int N_length1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, int, VectorPick<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, int, Range)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, int, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, int N_length1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, int, int)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      int d2, 
-      int d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<int>, 
-      _bz_VecExprConstant<int> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<int>(d2), 
-      _bz_VecExprConstant<int>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, float, Vector<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, float, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, int N_length1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, float, VectorPick<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, float, Range)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, float, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, int N_length1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, float, float)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      float d2, 
-      float d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<float>, 
-      _bz_VecExprConstant<float> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<float>(d2), 
-      _bz_VecExprConstant<float>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, double, Vector<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, double, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, int N_length1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, double, VectorPick<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, double, Range)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, double, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, int N_length1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, double, double)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      double d2, 
-      double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<double>, 
-      _bz_VecExprConstant<double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<double>(d2), 
-      _bz_VecExprConstant<double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, long double, Vector<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, long double, _bz_VecExpr<P_expr3>)
-template<class P_numtype1, int N_length1, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, long double, VectorPick<P_numtype3>)
-template<class P_numtype1, int N_length1, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, long double, Range)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, long double, TinyVector<P_numtype3, N_length3>)
-template<class P_numtype1, int N_length1, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      d3.begin()));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, long double, long double)
-template<class P_numtype1, int N_length1>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      long double d2, 
-      long double d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<long double>, 
-      _bz_VecExprConstant<long double> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<long double>(d2), 
-      _bz_VecExprConstant<long double>(d3)));
-}
-
-// where(TinyVector<P_numtype1, N_length1>, complex<T2>, Vector<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2, 
-      const Vector<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, complex<T2>, _bz_VecExpr<P_expr3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class T2, class P_expr3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2, 
-      _bz_VecExpr<P_expr3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExpr<P_expr3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, complex<T2>, VectorPick<P_numtype3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class T2, class P_numtype3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2, 
-      const VectorPick<P_numtype3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      VectorPickIterConst<P_numtype3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, complex<T2>, Range)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class T2>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2, 
-      Range d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      Range > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, complex<T2>, TinyVector<P_numtype3, N_length3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class T2, class P_numtype3, int N_length3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2, 
-      const TinyVector<P_numtype3, N_length3>& d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      TinyVectorIterConst<P_numtype3, N_length3> > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      d3.begin()));
-}
-#endif // BZ_HAVE_COMPLEX
-
-// where(TinyVector<P_numtype1, N_length1>, complex<T2>, complex<T3>)
-#ifdef BZ_HAVE_COMPLEX
-template<class P_numtype1, int N_length1, class T2, class T3>
-inline
-_bz_VecExpr<_bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > >
-where(const TinyVector<P_numtype1, N_length1>& d1, 
-      complex<T2> d2, 
-      complex<T3> d3)
-{ 
-    typedef _bz_VecWhere<TinyVectorIterConst<P_numtype1, N_length1>, 
-      _bz_VecExprConstant<complex<T2> > , 
-      _bz_VecExprConstant<complex<T3> >  > T_expr;
-
-    return _bz_VecExpr<T_expr>(T_expr(d1.begin(), 
-      _bz_VecExprConstant<complex<T2> > (d2), 
-      _bz_VecExprConstant<complex<T3> > (d3)));
-}
-#endif // BZ_HAVE_COMPLEX
-
-BZ_NAMESPACE_END
-
-#endif
diff --git a/weave/blitz-20001213/blitz/vecwhere.h b/weave/blitz-20001213/blitz/vecwhere.h
deleted file mode 100644
index 590f258..0000000
--- a/weave/blitz-20001213/blitz/vecwhere.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/***************************************************************************
- * blitz/vecwhere.h      where(X,Y,Z) function for vectors
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/23 03:28:28  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_VECWHERE_H 
-#define BZ_VECWHERE_H
-
-#ifndef BZ_VECEXPR_H
- #error <blitz/vecwhere.h> must be included via <blitz/vector.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_expr1, class P_expr2, class P_expr3>
-class _bz_VecWhere {
-
-public:
-    typedef P_expr1 T_expr1;
-    typedef P_expr2 T_expr2;
-    typedef P_expr3 T_expr3;
-    typedef _bz_typename T_expr2::T_numtype T_numtype2;
-    typedef _bz_typename T_expr3::T_numtype T_numtype3;
-    typedef BZ_PROMOTE(T_numtype2, T_numtype3) T_numtype;
-
-#ifdef BZ_PASS_EXPR_BY_VALUE
-    _bz_VecWhere(T_expr1 a, T_expr2 b, T_expr3 c)
-        : iter1_(a), iter2_(b), iter3_(c)
-    { }
-#else
-    _bz_VecWhere(const T_expr1& a, const T_expr2& b, const T_expr3& c)
-        : iter1_(a), iter2_(b), iter3_(c)
-    { }
-#endif
-
-#ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
-    _bz_VecWhere(const _bz_VecWhere<T_expr1, T_expr2, T_expr3>& x)
-        : iter1_(x.iter1_), iter2_(x.iter2_), iter3_(x.iter3_)
-    { }
-#endif
-
-    T_numtype operator[](int i) const
-    { 
-        return iter1_[i] ? iter2_[i] : iter3_[i];
-    }
-
-    enum {
-           _bz_staticLengthCount =
-      P_expr1::_bz_staticLengthCount + P_expr2::_bz_staticLengthCount
-         + P_expr3::_bz_staticLengthCount,
-
-           _bz_dynamicLengthCount =
-      P_expr1::_bz_dynamicLengthCount + P_expr2::_bz_dynamicLengthCount
-         + P_expr3::_bz_dynamicLengthCount,
-
-           _bz_staticLength =
-      _bz_meta_max<_bz_meta_max<P_expr1::_bz_staticLength, 
-            P_expr2::_bz_staticLength>::max, P_expr3::_bz_staticLength>::max
-    };
-
-    T_numtype _bz_fastAccess(int i) const
-    { 
-        return iter1_._bz_fastAccess(i) 
-            ? iter2_._bz_fastAccess(i) 
-            : iter3_._bz_fastAccess(i); 
-    }
-
-    _bz_bool _bz_hasFastAccess() const
-    {
-        return iter1_._bz_hasFastAccess() &&
-            iter2_._bz_hasFastAccess() &&
-            iter3_._bz_hasFastAccess();
-    }
-
-    int length(int recommendedLength) const
-    {
-        return iter1_.length(recommendedLength);
-    }
-
-    int _bz_suggestLength() const
-    {
-        BZPRECONDITION(
-            (iter1_._bz_suggestLength() == iter2_._bz_suggestLength())
-         && (iter2_._bz_suggestLength() == iter3_._bz_suggestLength()));
-
-        return iter1_._bz_suggestLength();
-    }
-
-private:
-    _bz_VecWhere() { }
-
-    T_expr1 iter1_;
-    T_expr2 iter2_;
-    T_expr3 iter3_;
-};
-
-BZ_NAMESPACE_END
-
-#include <blitz/vecwhere.cc>        // Expression templates
-
-#endif // BZ_VECWHERE_H
-
diff --git a/weave/blitz-20001213/blitz/wrap-climits.h b/weave/blitz-20001213/blitz/wrap-climits.h
deleted file mode 100644
index e6fc89f..0000000
--- a/weave/blitz-20001213/blitz/wrap-climits.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef BZ_WRAP_CLIMITS_H
-#define BZ_WRAP_CLIMITS_H
-
-#ifdef BZ_HAVE_CLIMITS
- #include <climits>
-#else
- #include <limits.h>
-#endif
-
-#endif
diff --git a/weave/blitz-20001213/blitz/zero.cc b/weave/blitz-20001213/blitz/zero.cc
deleted file mode 100644
index d585666..0000000
--- a/weave/blitz-20001213/blitz/zero.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 1997 Todd Veldhuizen <tveldhui@oonumerics.org>
- * All rights reserved.  Please see <blitz/blitz.h> for terms and
- * conditions of use.
- *
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:25:28  ej
- * Looks like I need all the .cc files for blitz also
- *
- * Revision 1.1.1.1  2000/06/19 12:26:09  tveldhui
- * Imported sources
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- */
-
-#ifndef BZ_ZERO_H
- #include <blitz/zero.h>
-#endif
-
-#ifndef BZ_ZERO_CC
-#define BZ_ZERO_CC
-
-BZ_NAMESPACE(blitz)
-
-template<class P_numtype>
-P_numtype ZeroElement<P_numtype>::zero_ = 0;
-
-#ifdef BZ_HAVE_COMPLEX
-
-complex<float>  ZeroElement<complex<float> >::zero_ = 
-    complex<float>(0.0f, 0.0f);
-
-complex<double> ZeroElement<complex<double> >::zero_ =
-    complex<double>(0.,0.);
-
-complex<long double> ZeroElement<complex<long double> >::zero_ =
-    complex<long double>(0.0L, 0.0L);
-
-#endif // BZ_HAVE_COMPLEX
-
-BZ_NAMESPACE_END
-
-#endif // BZ_ZERO_CC
-
diff --git a/weave/blitz-20001213/blitz/zero.h b/weave/blitz-20001213/blitz/zero.h
deleted file mode 100644
index 7dc3a0c..0000000
--- a/weave/blitz-20001213/blitz/zero.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/***************************************************************************
- * blitz/zero.h          Zero elements
- *
- * $Id$
- *
- * Copyright (C) 1997-1999 Todd Veldhuizen <tveldhui@oonumerics.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * Suggestions:          blitz-dev@oonumerics.org
- * Bugs:                 blitz-bugs@oonumerics.org
- *
- * For more information, please see the Blitz++ Home Page:
- *    http://oonumerics.org/blitz/
- *
- ***************************************************************************
- * $Log$
- * Revision 1.1  2002/01/03 19:50:34  eric
- * renaming compiler to weave
- *
- * Revision 1.1  2001/04/27 17:22:04  ej
- * first attempt to include needed pieces of blitz
- *
- * Revision 1.1.1.1  2000/06/19 12:26:10  tveldhui
- * Imported sources
- *
- * Revision 1.4  1998/03/14 00:04:47  tveldhui
- * 0.2-alpha-05
- *
- * Revision 1.3  1997/07/16 14:51:20  tveldhui
- * Update: Alpha release 0.2 (Arrays)
- *
- * Revision 1.2  1997/01/24 14:42:00  tveldhui
- * Periodic RCS update
- *
- * Revision 1.1  1997/01/13 22:19:58  tveldhui
- * Periodic RCS update
- *
- *
- ***************************************************************************
- *
- * The purpose of the ZeroElement class is to provide an lvalue for
- * non-const element access of matrices with zero elements.  For
- * example, a tridiagonal matrix has many elements which are
- * always zero:
- *
- * [ x x 0 0 ]
- * [ x x x 0 ]
- * [ 0 x x x ]
- * [ 0 0 x x ]
- *
- * To implement an operator()(int i, int j) for a tridiagonal
- * matrix which may be used as an lvalue
- *
- * e.g. Matrix<double, Tridiagonal> M(4,4);
- *      M(1,2) = 3.0L;
- *
- * some way of returning an lvalue for the zero elements is needed.
- * (Either that, or an intermediate class must be returned -- but
- * this is less efficient).  The solution used for the Blitz++
- * library is to have a unique zero element for each numeric
- * type (float, double, etc.).  This zero element is then
- * returned as an lvalue when needed.
- *
- * The disadvantage is the possibility of setting the global
- * zero-element to something non-zero.  
- */
-
-#ifndef BZ_ZERO_H
-#define BZ_ZERO_H
-
-#ifndef BZ_BLITZ_H
- #include <blitz/blitz.h>
-#endif
-
-BZ_NAMESPACE(blitz)
-
-template<class P_numtype>
-class ZeroElement {
-public:
-    typedef P_numtype T_numtype;
-
-    static T_numtype& zero()
-    { 
-        return zero_; 
-    }
-
-private:
-    static T_numtype zero_;
-};
-
-// Specialization of ZeroElement for complex<float>, complex<double>,
-// and complex<long double>
-
-#define BZZERO_DECLARE(T)            \
-  template<>                         \
-  class ZeroElement<T > {            \
-  public:                            \
-    static T& getZero()              \
-    { return zero_; }                \
-  private:                           \
-    static T zero_;                  \
-  }
-
-#ifdef BZ_HAVE_COMPLEX
-  BZZERO_DECLARE(complex<float>);
-  BZZERO_DECLARE(complex<double>);
-  BZZERO_DECLARE(complex<long double>);
-#endif // BZ_HAVE_COMPLEX
-
-BZ_NAMESPACE_END
-
-#include <blitz/zero.cc>
-
-#endif // BZ_ZERO_H
-